問題描述:
按照下面步驟增加了藍(lán)牙權(quán)限,但是沒有自動彈窗申請權(quán)限,并且自動拒絕,在檢查權(quán)限授權(quán)校驗時不通過
Android11之后增加了兩個藍(lán)牙相關(guān)權(quán)限
<!-- Android 31 之后新增了兩個杈限 -->
<uses-permission android:name="android.permission.BLUETOOTH_SCAN" />
<uses-permission android:name="android.permission.BLUETOOTH_CONNECT" />
這兩個權(quán)限是運行時權(quán)限,需要動態(tài)申請,app擁有這兩個權(quán)限才能正常連接藍(lán)牙設(shè)備進行傳輸。
public String[] requestPermissions() {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) {
// Android 版本大于等于 Android12 時
// 只包括藍(lán)牙這部分的權(quán)限,其余的需要什么權(quán)限自己添加
return new String[]{
...
Manifest.permission.BLUETOOTH,
Manifest.permission.BLUETOOTH_ADMIN,
Manifest.permission.BLUETOOTH_SCAN,
Manifest.permission.BLUETOOTH_CONNECT,
...
};
}
只有當(dāng)(Build.VERSION.SDK_INT >= Build.VERSION_CODES.S)時,才會彈窗申請新加的兩個權(quán)限,所以代碼中需要增加一下Android版本的判斷。