Android忽略拔插键盘重载应用

Android应用开发过程中遇到了拔插USB键盘导致应用重启问题,由于应用场景会出现频繁拔插USB键盘的场景,因此需要忽略该特性。

若只针对单个应用
AndroidManifest.xml中对activity进行以下定义

<activity
            ...
            android:configChanges="keyboard|keyboardHidden|navigation">

若进行修改可修改以下方法
方法一
对比Configuration改变
frameworks/base/core/java/android/app/ResourcesManager.java#619
修改boolean isSameResourcesOverrideConfig(@Nullable IBinder activityToken,@Nullable Configuration overrideConfig)方法即可

方法二
设置默认configChanges
frameworks/base/core/java/android/content/pm/parsing/component/ParsedActivityUtils.java#146
frameworks/base/core/java/android/content/pm/PackageParser.java#4367

找寻到AndroidManifestActivity_recreateOnConfigChanges属性读取位置进行默认赋值

int mConfigChanges = ActivityInfo.CONFIG_NAVIGATION
                    | ActivityInfo.CONFIG_KEYBOARD
                    | ActivityInfo.CONFIG_KEYBOARD_HIDDEN;
            a.info.configChanges = getActivityConfigChanges(
                    sa.getInt(R.styleable.AndroidManifestActivity_configChanges, mConfigChanges),
                    sa.getInt(R.styleable.AndroidManifestActivity_recreateOnConfigChanges, 0));

发表回复

CAPTCHAis initialing...