[英]Which android permission is better for Bluetooth device discovery or receiving Bluetooth broadcast?
I am getting permission issues while trying for Bluetooth device discovery. 尝试发现蓝牙设备时出现权限问题。
Issue:- "requires android.permission.ACCESS_COARSE_LOCATION due to sender com.android.bluetooth" already added the following permissions to manifest 问题: “由于发件人com.android.bluetooth,需要android.permission.ACCESS_COARSE_LOCATION”已经添加了以下权限来实现
<uses-permission android:name="android.permission.BLUETOOTH" />
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
The correct procedure for BT device discovery on Marshmallow is as follows: 在棉花糖上发现BT设备的正确过程如下:
1) Have ACCESS_COARSE_LOCATION permission requirement in manifest along with usual bluetooth permissions: 1)在清单中具有ACCESS_COARSE_LOCATION权限要求以及通常的蓝牙权限:
<uses-permission android:name="android.permission.BLUETOOTH" />
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
2)Ensure you have run-time permission for ACCESS_COARSE_LOCATION 2)确保您具有ACCESS_COARSE_LOCATION的运行时权限
protected void checkLocationPermission() {
if (ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION)
!= PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(this,
new String[]{Manifest.permission.ACCESS_COARSE_LOCATION},
REQUEST_COARSE_LOCATION);
}
}
@Override
public void onRequestPermissionsResult(int requestCode,
String permissions[], int[] grantResults) {
switch (requestCode) {
case REQUEST_COARSE_LOCATION: {
if (grantResults.length > 0
&& grantResults[0] == PackageManager.PERMISSION_GRANTED) {
proceedDiscovery(); // --->
} else {
//TODO re-request
}
break;
}
}
}
3) Register a broadcast receiver for ACTION_FOUND and call 3)为ACTION_FOUND注册一个广播接收器并呼叫
BluetoothAdapter.startDiscovery()
protected void proceedDiscovery() {
IntentFilter filter = new IntentFilter(BluetoothDevice.ACTION_FOUND);
filter.addAction(BluetoothDevice.ACTION_NAME_CHANGED);
registerReceiver(mReceiver, filter);
mBluetoothAdapter.startDiscovery();
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.