藍(lán)牙的權(quán)限
這里我們只簡(jiǎn)單的聊下藍(lán)牙的掃描和連接,不牽扯到使用藍(lán)牙掃描結(jié)果來(lái)推到物理位置
- 聲明權(quán)限
>= Android 12
BLUETOOTH_SCAN
BLUETOOTH_CONNECT
這兩個(gè)權(quán)限都是運(yùn)行時(shí)權(quán)限
<= Android 11
BLUETOOTH
ACCESS_FINE_LOCATION
位置權(quán)限屬于運(yùn)行時(shí)權(quán)限
- 示例代碼
fun requestPermissions(onSuccess: () -> Unit) {
this.onSuccessCallback = onSuccess
val missingPermissions = mutableListOf<String>()
// >= Android 12
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) {
// 掃描權(quán)限
if (ContextCompat.checkSelfPermission(fragment.requireContext(), Manifest.permission.BLUETOOTH_SCAN) != PackageManager.PERMISSION_GRANTED) {
missingPermissions.add(Manifest.permission.BLUETOOTH_SCAN)
}
// 連接權(quán)限
if (ContextCompat.checkSelfPermission(fragment.requireContext(), Manifest.permission.BLUETOOTH_CONNECT) != PackageManager.PERMISSION_GRANTED) {
missingPermissions.add(Manifest.permission.BLUETOOTH_CONNECT)
}
} else // >= Android 6.0
// 位置權(quán)限
if (ContextCompat.checkSelfPermission(fragment.requireContext(), Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
missingPermissions.add(Manifest.permission.ACCESS_FINE_LOCATION)
}
if (missingPermissions.isNotEmpty()) {
permissionLauncher.launch(missingPermissions.toTypedArray())
} else {
checkBluetoothSwitch()
}
}