美文网首页
Android 蓝牙搜索不到设备(android M权限问题)

Android 蓝牙搜索不到设备(android M权限问题)

作者: Super_圣代 | 来源:发表于2017-05-22 17:34 被阅读0次

    今天早上做了一个android的App的一个蓝牙模块,刚开始使用了第三方的蓝牙操作库(为了偷懒)。。。调试的时候却发现一个问题,不论怎样都无法搜索到设备。
    重新自己写一个操作库,一步一步检查,
    蓝牙开启,权限加了,广播注册没有问题,和以前写的蓝牙模块也没什么区别啊。
    What? 木有问题啊,为什么搜索不到设备呢,换了两部手机一样不行。

    经过一番思考后,突然想起android从6.0开始一些权限需要动态注册,可能是这个问题。

    参照Android 6.0新特性

    果不其然,果然是动态权限注册的问题。
    首先蓝牙操作都需要在Manifest中注册两个权限
    <uses-permission android:name="android.permission.BLUETOOTH_ADMIN"/>
    <uses-permission android:name="android.permission.BLUETOOTH_PRIVILEGED"/>
    
    其次在API 23及以上的版本都需要动态权限注册

    而蓝牙则需要动态添加这两条权限

        <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
        <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
    

    动态权限的注册方法
    (这里用了第三方的动态权限注册库 AndPermission
    具体实现代码可以这样

            AndPermission.with(this)
                    .permission(Manifest.permission.ACCESS_COARSE_LOCATION , Manifest.permission.ACCESS_FINE_LOCATION)
                    .callback(new PermissionListener() {
                        @Override
                        public void onSucceed(int requestCode, @NonNull List<String> grantPermissions) {
                          ///权限注册成功时
                        }
    
                        @Override
                        public void onFailed(int requestCode, @NonNull List<String> deniedPermissions) {
                            MainActivity.this.finish();///注册失败时
                        }
                    })
                    .start();
    

    ok完事,次饭!
    Wi-Fi搜索设备也需要定位权限,且开启定位。

    相关文章

      网友评论

          本文标题:Android 蓝牙搜索不到设备(android M权限问题)

          本文链接:https://www.haomeiwen.com/subject/nbhixxtx.html