我正在开发一个Android应用程序,其中我需要支持USB键盘。我还没有开发出明确支持USB键盘的东西,因为我认为每个应用程序都可以使用USB键盘。
问题是,当我试图连接或断开USB键盘时,我的应用程序会崩溃,而没有来自应用程序的错误跟踪。
我的设备是安装了Android 4.1的联想。我能做些什么来解决这个问题?
连接外部键盘时会发生"活动"配置更改。
要解决崩溃,请将以下元素添加到所有活动的AndroidManifest.xml
中:
android:configChanges="orientation|keyboard|keyboardHidden"
根据文件,android:configChanges
:
列出活动将自行处理的配置更改。什么时候运行时发生配置更改,活动将关闭并在默认情况下重新启动,但使用以下语句声明配置属性将阻止活动重新启动。相反活动仍在运行,其onConfigurationChanged()方法为呼叫。
对我来说,添加"orientation | keyboard | keyboardHidden";到configChanges仍然会调用活动的onDestroy和onCreate。经过长时间的研究,我发现了这篇文章:https://developer.samsung.com/sdp/blog/en-us/2017/12/07/samsung-dex-lifecycle-on-switching-between-mobile-and-samsung-dex-mode
基本上,如果你使用联想的生产力模式或三星DeX,它仍然会重新创建应用程序,所以如果你想让应用程序在添加物理键盘时不重新创建,就有必要添加所有这些。:
<activity android:configChanges="orientation|screenSize|screenLayout|smallestScreenSize|uiMode|density">
此外,在您的AndroidManifest:中添加三星DeX
<meta-data
android:name="com.samsung.android.keepalive.density"
android:value="true" />