React Native Android应用连接/断开蓝牙耳机时重启的原因及解决办法
React Native Android应用连接/断开蓝牙耳机时Activity重建问题
我开发的React Native Android应用,在连接或断开蓝牙耳机时会触发Activity重建,导致应用重启。我已经尝试添加蓝牙相关权限,但问题依旧。
已尝试的操作
我在AndroidManifest.xml中添加了以下蓝牙权限,未解决问题:
<uses-permission android:name="android.permission.BLUETOOTH_CONNECT" />
之后补充了更多蓝牙权限,仍然无效:
<uses-permission android:name="android.permission.BLUETOOTH_SCAN" android:usesPermissionFlags="neverForLocation" /> <uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
环境信息
- React Native版本:0.66.2
- Android系统版本:12
- 测试设备:Pixel 4
问题根源与解决方法
Activity重建和蓝牙权限无关,这是Android系统在**配置变更(Configuration Change)**时的默认行为:蓝牙耳机连接/断开会触发audio配置变更,系统默认会销毁并重建当前Activity以适配新的音频配置。
解决步骤:
在AndroidManifest.xml中声明忽略音频配置变更
给主Activity添加android:configChanges="audio"属性,告诉系统无需重建Activity来处理该配置变化。注意要保留原有configChanges的属性值,仅追加audio:<activity android:name=".MainActivity" android:configChanges="keyboard|keyboardHidden|orientation|screenSize|uiMode|screenLayout|smallestScreenSize|audio" <!-- 其他原有属性保持不变 --> >(可选)手动处理配置变更
如果应用需要在音频配置变化时执行自定义逻辑(比如切换音频输出源),可以在MainActivity.java中重写onConfigurationChanged方法:@Override public void onConfigurationChanged(Configuration newConfig) { super.onConfigurationChanged(newConfig); // 此处添加音频配置变化后的自定义逻辑 // 例如通知React Native端音频状态变更 }排查第三方库
检查项目中使用的第三方音频相关库,确认是否有主动触发Activity重建的逻辑,如有则调整对应配置。
内容的提问来源于stack exchange,提问作者Darri
相关产品推荐
相关产品推荐

