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

Android 12三星设备申请BLUETOOTH_CONNECT权限后崩溃求助

解决Android 12三星设备BLUETOOTH_CONNECT权限崩溃问题

针对你遇到的Android 12三星设备申请蓝牙权限后仍崩溃的问题,可按以下步骤排查解决:

  • 严格遵循动态权限申请流程
    Android 12(API 31)及以上版本中,BLUETOOTH_CONNECT属于危险权限,必须在运行时动态申请,且需等待用户授权后再执行蓝牙操作。不要在权限申请弹窗未得到用户响应前调用任何蓝牙相关API,三星设备的权限管控逻辑对此要求更严格。
    示例代码:

    private static final int REQUEST_BLUETOOTH_PERM = 101;
    
    // 检查并申请权限
    private void checkBluetoothPermission() {
        if (ContextCompat.checkSelfPermission(this, Manifest.permission.BLUETOOTH_CONNECT)
                != PackageManager.PERMISSION_GRANTED) {
            ActivityCompat.requestPermissions(this,
                    new String[]{Manifest.permission.BLUETOOTH_CONNECT},
                    REQUEST_BLUETOOTH_PERM);
        } else {
            // 权限已授权,执行蓝牙操作
            startBluetoothActions();
        }
    }
    
    // 处理权限申请结果
    @Override
    public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
        super.onRequestPermissionsResult(requestCode, permissions, grantResults);
        if (requestCode == REQUEST_BLUETOOTH_PERM) {
            if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
                startBluetoothActions();
            } else {
                // 用户拒绝权限,提示或处理
            }
        }
    }
    
  • 修正Manifest权限声明
    确保权限声明位置正确(<manifest>标签内、<application>标签外),并为旧版本权限添加版本限制,避免冲突:

    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
        package="com.your.package">
    
        <!-- Android 11及以下所需蓝牙权限 -->
        <uses-permission android:name="android.permission.BLUETOOTH" android:maxSdkVersion="30" />
        <uses-permission android:name="android.permission.BLUETOOTH_ADMIN" android:maxSdkVersion="30" />
        
        <!-- Android 12+所需权限 -->
        <uses-permission android:name="android.permission.BLUETOOTH_CONNECT" />
        <!-- 若需扫描设备,需添加BLUETOOTH_SCAN权限 -->
        <uses-permission android:name="android.permission.BLUETOOTH_SCAN" />
    
        <application ...>
            ...
        </application>
    </manifest>
    
  • 排查权限未授权时的提前调用
    检查代码中是否存在用户未授权就触发蓝牙操作的场景,比如在Activity启动时直接调用蓝牙扫描、连接逻辑,而没有先检查权限。这种情况在三星设备上会直接抛出SecurityException。

  • 三星设备特殊排查

    • 尝试清除应用的权限设置,重新打开应用并授权蓝牙权限
    • 重启设备后再测试,排除系统权限缓存问题
    • 检查设备系统是否有可用更新,部分三星Android 12版本存在权限逻辑bug,可通过系统更新修复

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 18:54:22