You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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以适配新的音频配置。

解决步骤:

  1. 在AndroidManifest.xml中声明忽略音频配置变更
    给主Activity添加android:configChanges="audio"属性,告诉系统无需重建Activity来处理该配置变化。注意要保留原有configChanges的属性值,仅追加audio:

    <activity
        android:name=".MainActivity"
        android:configChanges="keyboard|keyboardHidden|orientation|screenSize|uiMode|screenLayout|smallestScreenSize|audio"
        <!-- 其他原有属性保持不变 -->
    >
    
  2. (可选)手动处理配置变更
    如果应用需要在音频配置变化时执行自定义逻辑(比如切换音频输出源),可以在MainActivity.java中重写onConfigurationChanged方法:

    @Override
    public void onConfigurationChanged(Configuration newConfig) {
        super.onConfigurationChanged(newConfig);
        // 此处添加音频配置变化后的自定义逻辑
        // 例如通知React Native端音频状态变更
    }
    
  3. 排查第三方库
    检查项目中使用的第三方音频相关库,确认是否有主动触发Activity重建的逻辑,如有则调整对应配置。

内容的提问来源于stack exchange,提问作者Darri

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 13:01:19