Android6.0蓝牙搜索出错问题

来源:互联网 发布:java get set方法 编辑:程序博客网 时间:2024/05/21 08:03

Android6.0google将权限分为普通权限和危险权限,在6.0之前使用蓝牙只需要添加如下权限

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

6.0之后需要添加如下权限

<!--模糊定位-->    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>

且需要动态申请权限

private void requestPermission() {        if (Build.VERSION.SDK_INT >= 23) {            int checkAccessFinePermission = ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION);            if (checkAccessFinePermission != PackageManager.PERMISSION_GRANTED) {                ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.ACCESS_FINE_LOCATION},                        REQUEST_PERMISSION_ACCESS_LOCATION);                Log.d(TAG, "没有权限,请求权限");                return;            } else {                /**                 * 如果已经同意了该权限则开始搜索设备                 */            }            Log.d(TAG, "已有定位权限");        }    }

危险权限是分组的,如果用户同意了该组的某一权限,那么默认同意该组的所有危险权限,下面处理用户是否授权

/**     * 申请权限回调方法 处理用户是否授权     * @param requestCode     * @param permissions     * @param grantResults     */    @Override    public void onRequestPermissionsResult(int requestCode, String permissions[], int[] grantResults) {        switch (requestCode) {            case REQUEST_PERMISSION_ACCESS_LOCATION: {                if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {                    /**                     * 用户同意授权开始搜索设备                     */                } else {                    //用户拒绝授权 则给用户提示没有权限功能无法使用,                    Log.d(TAG, "没有定位权限,请先开启!");                }            }        }        super.onRequestPermissionsResult(requestCode, permissions, grantResults);    }

现在搜索蓝牙设备就没有问题了,6.0及以上如果手机没有收到提示申请权限,亲测打开设置_gps定位再搜索就没有问题

0 0
原创粉丝点击