溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Android 6.0 藍(lán)牙搜索不到設(shè)備原因,MIUI權(quán)限申請(qǐng)機(jī)制方法

發(fā)布時(shí)間:2020-08-21 00:05:08 來(lái)源:腳本之家 閱讀:263 作者:ddiagw 欄目:移動(dòng)開(kāi)發(fā)

為提供更高的數(shù)據(jù)保護(hù) Android6.0版本上增加了關(guān)于Wifi和藍(lán)牙的權(quán)限。

藍(lán)牙搜索到設(shè)備需要用到定位服務(wù),所以在開(kāi)發(fā)中 targetSdkVersion 大于等于23(6.0) 需要在代碼中進(jìn)行權(quán)限獲取

需要在配置文件中申請(qǐng)兩個(gè)權(quán)限:

<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/> 
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/> 

在代碼中調(diào)用時(shí)先進(jìn)行權(quán)限判斷,如果沒(méi)有權(quán)限就去申請(qǐng)權(quán)限:

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, "沒(méi)有權(quán)限,請(qǐng)求權(quán)限");
   return;
  }
  Log.d(TAG, "已有定位權(quán)限");
 }
 //做下面該做的事
}

調(diào)用ActivityCompat.requestPermissions()之后會(huì)有一個(gè)回調(diào)

@Override
public void onRequestPermissionsResult(int requestCode, String permissions[], int[] grantResults) {
 switch (requestCode) {
  case Common.REQUEST_PERMISSION_ACCESS_LOCATION: {
   if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
    Log.d(TAG, "開(kāi)啟權(quán)限permission granted!");
    //做下面該做的事
   } else {
    Log.d(TAG, "沒(méi)有定位權(quán)限,請(qǐng)先開(kāi)啟!");
   }
  }
 }
 super.onRequestPermissionsResult(requestCode, permissions, grantResults);
}

網(wǎng)上有人說(shuō),當(dāng)彈出權(quán)限確認(rèn)框之后,用戶點(diǎn)擊確定或者拒絕時(shí)才會(huì)調(diào)用進(jìn)行回調(diào):onRequestPermissionsResult

但是在小米手機(jī)MIUI上并不是這樣的。MIUI上是這樣的:權(quán)限管理那里設(shè)置應(yīng)用的定位權(quán)限為拒絕或者詢問(wèn)時(shí)checkAccessFinePermission != PackageManager.PERMISSION_GRANTED,說(shuō)明沒(méi)有定位權(quán)限 。如果設(shè)置為允許,checkAccessFinePermission ==PackageManager.PERMISSION_GRANTED,說(shuō)明有定位權(quán)限。

當(dāng)設(shè)置拒絕時(shí)去ActivityCompat.requestPermissions ,并沒(méi)有彈出權(quán)限使用確認(rèn)框,而是直接回調(diào):沒(méi)有權(quán)限

當(dāng)設(shè)置詢問(wèn)時(shí)去ActivityCompat.requestPermissions ,并沒(méi)有彈出權(quán)限使用確認(rèn)框,而是直接回調(diào):已有權(quán)限,然后在調(diào)用藍(lán)牙代碼的時(shí)候彈出確認(rèn)框。當(dāng)點(diǎn)擊允許時(shí)權(quán)限管理那里變成了允許,當(dāng)點(diǎn)擊拒絕時(shí),權(quán)限管理那里變成拒絕,但是下次再進(jìn)行權(quán)限檢查時(shí)返回 已有定位權(quán)限。權(quán)限管理那里明明是拒絕的啊,怎么就有定位權(quán)限了?感覺(jué)這是MIUI的一個(gè)bug,我的系統(tǒng)是:MIUI 8 6.11.3開(kāi)發(fā)版。

以上這篇Android6.0 藍(lán)牙搜索不到設(shè)備原因,MIUI權(quán)限申請(qǐng)機(jī)制方法就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持億速云。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI