文章链接:https://blog.csdn.net/weixin_42433094/article/details/112472606
我需要开发一个发现附近蓝牙设备的需求,然而注册了BluetoothDevice.ACTION_FIND广播之后且开启了一个蓝牙设备,但却接收不到这个广播,经过查询和搜索了资料发现,在Android 6之后需要在配置文件添加两个新的权限,且在代码里需要动态请求权限:
步骤如下:
1.在Manifest配置文件中添加以下两个权限:
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
2.
1)在代码里动态请求以下权限:
if (Build.VERSION.SDK_INT >= 6.0) {
ActivityCompat.requestPermissions(this, new String[]{
Manifest.permission.ACCESS_FINE_LOCATION},1);
}
2)请求结果的回调:
public void onRequestPermissionsResult(int requestCode, String permissions[], int[] grantResults) {
switch (requestCode) {
case 1: {
// If request is cancelled, the result arrays are empty.
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
Log.i(TAG, "获取蓝牙权限成功");
}
return;
}
}
}
接下来就可以正常发现蓝牙设备了