android蓝牙开发:无法发现蓝牙设备的问题

来源:互联网 发布:淘宝手机图片尺寸多少 编辑:程序博客网 时间:2024/05/20 13:04

蓝牙应用搜索不到附近设备的问题困扰了很久.

蓝牙应用需要两个基本权限:

<uses-permission android:name="android.permission.BLUETOOTH"/><uses-permission android:name="android.permission.BLUETOOTH_ADMIN"/>

而对于发现设备新这个功能, 还需另外两个权限(Android M 以上版本需要显式获取授权,附授权代码):

<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/><uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
@SuppressLint("WrongConstant")private void getPermission() {    if (Build.VERSION.SDK_INT > Build.VERSION_CODES.M) {        int permissionCheck = 0;        permissionCheck = this.checkSelfPermission(Manifest.permission.ACCESS_FINE_LOCATION);        permissionCheck += this.checkSelfPermission(Manifest.permission.ACCESS_COARSE_LOCATION);        if (permissionCheck != PackageManager.PERMISSION_GRANTED) {            this.requestPermissions( // 请求授权                    new String[]{Manifest.permission.ACCESS_FINE_LOCATION,                            Manifest.permission.ACCESS_COARSE_LOCATION},                    ACCESS_LOCATION);// 自定义常量,任意整型        } else {            // 已经获得权限        }    }}@Overridepublic void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {    switch (requestCode) {        case ACCESS_LOCATION:            if (hasAllPermissionGranted(grantResults)) {                Log.d(TAG, "onRequestPermissionsResult: OK");            } else {                Log.d(TAG, "onRequestPermissionsResult: NOT OK");            }            break;    }}private boolean hasAllPermissionGranted(int[] grantResults) {    for (int grantResult : grantResults) {        if (grantResult == PackageManager.PERMISSION_DENIED) {            return false;        }    }    return true;}
在初始化方法中调用
getPermission()
方法即可获取授权

阅读全文
0 0
原创粉丝点击