安卓系统在键盘插入时崩溃



我正在开发一个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" />

最新更新