為提供更高的數(shù)據(jù)保護(hù) Android6.0版本上增加了關(guān)于Wifi和藍(lán)牙的權(quán)限。
為企業(yè)提供成都做網(wǎng)站、網(wǎng)站建設(shè)、網(wǎng)站優(yōu)化、全網(wǎng)整合營銷推廣、競價托管、品牌運(yùn)營等營銷獲客服務(wù)。創(chuàng)新互聯(lián)擁有網(wǎng)絡(luò)營銷運(yùn)營團(tuán)隊(duì),以豐富的互聯(lián)網(wǎng)營銷經(jīng)驗(yàn)助力企業(yè)精準(zhǔn)獲客,真正落地解決中小企業(yè)營銷獲客難題,做到“讓獲客更簡單”。自創(chuàng)立至今,成功用技術(shù)實(shí)力解決了企業(yè)“網(wǎng)站建設(shè)、網(wǎng)絡(luò)品牌塑造、網(wǎng)絡(luò)營銷”三大難題,同時降低了營銷成本,提高了有效客戶轉(zhuǎn)化率,獲得了眾多企業(yè)客戶的高度認(rèn)可!
藍(lán)牙搜索到設(shè)備需要用到定位服務(wù),所以在開發(fā)中 targetSdkVersion 大于等于23(6.0) 需要在代碼中進(jìn)行權(quán)限獲取
需要在配置文件中申請兩個權(quán)限:
在代碼中調(diào)用時先進(jìn)行權(quán)限判斷,如果沒有權(quán)限就去申請權(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, "沒有權(quán)限,請求權(quán)限"); return; } Log.d(TAG, "已有定位權(quán)限"); } //做下面該做的事 }
調(diào)用ActivityCompat.requestPermissions()之后會有一個回調(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, "開啟權(quán)限permission granted!"); //做下面該做的事 } else { Log.d(TAG, "沒有定位權(quán)限,請先開啟!"); } } } super.onRequestPermissionsResult(requestCode, permissions, grantResults); }
網(wǎng)上有人說,當(dāng)彈出權(quán)限確認(rèn)框之后,用戶點(diǎn)擊確定或者拒絕時才會調(diào)用進(jìn)行回調(diào):onRequestPermissionsResult
但是在小米手機(jī)MIUI上并不是這樣的。MIUI上是這樣的:權(quán)限管理那里設(shè)置應(yīng)用的定位權(quán)限為拒絕或者詢問時checkAccessFinePermission != PackageManager.PERMISSION_GRANTED,說明沒有定位權(quán)限 。如果設(shè)置為允許,checkAccessFinePermission ==PackageManager.PERMISSION_GRANTED,說明有定位權(quán)限。
當(dāng)設(shè)置拒絕時去ActivityCompat.requestPermissions ,并沒有彈出權(quán)限使用確認(rèn)框,而是直接回調(diào):沒有權(quán)限
當(dāng)設(shè)置詢問時去ActivityCompat.requestPermissions ,并沒有彈出權(quán)限使用確認(rèn)框,而是直接回調(diào):已有權(quán)限,然后在調(diào)用藍(lán)牙代碼的時候彈出確認(rèn)框。當(dāng)點(diǎn)擊允許時權(quán)限管理那里變成了允許,當(dāng)點(diǎn)擊拒絕時,權(quán)限管理那里變成拒絕,但是下次再進(jìn)行權(quán)限檢查時返回 已有定位權(quán)限。權(quán)限管理那里明明是拒絕的啊,怎么就有定位權(quán)限了?感覺這是MIUI的一個bug,我的系統(tǒng)是:MIUI 8 6.11.3開發(fā)版。
以上這篇Android6.0 藍(lán)牙搜索不到設(shè)備原因,MIUI權(quán)限申請機(jī)制方法就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持創(chuàng)新互聯(lián)。