Android 6.0運(yùn)行時(shí)權(quán)限勾選不再詢問后該如何處理?

【威哥說】上文給大家講解了android運(yùn)行時(shí)權(quán)限的使用,本文講解下當(dāng)用戶勾選不再詢問后的權(quán)限該如何處理。

當(dāng)?shù)谝淮握?qǐng)求權(quán)限申請(qǐng)被拒絕后再進(jìn)行第二次申請(qǐng)時(shí),對(duì)話框中會(huì)多出一個(gè) 不再詢問 的復(fù)選框。如果勾選了該復(fù)選框并且拒絕請(qǐng)求,那么以后將無(wú)法再申請(qǐng)?jiān)摍?quán)限。也就是說在調(diào)用 requestPermissions() 后,onRequestPermissionsResult() 會(huì)立刻被調(diào)用并且申請(qǐng)結(jié)果為 PERMISSION_DENIED 。 其實(shí)這個(gè)時(shí)候還是有一根救命稻草的。

判斷是否勾選不再詢問

首先需要判斷用戶是否勾選了不再詢問。

@Override

public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {

switch (requestCode){

case MY_PERMISSIONS_APPLY:

for (int i = 0; i < grantResults.length; i++) {

//判斷權(quán)限的結(jié)果,如果有被拒絕,就return

if (grantResults[i] == PackageManager.PERMISSION_DENIED){

if (!ActivityCompat.shouldShowRequestPermissionRationale(this,

permissions[i])){

showToast("點(diǎn)擊權(quán)限,并打開全部權(quán)限");

Intent intent = new Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS);

Uri uri = Uri.fromParts("package", getPackageName(), null);

intent.setData(uri);

startActivityForResult(intent, REQUEST_PERMISSION_SETTING);

}

ActivityCompat 位于 support.v7 包中,因?yàn)檫\(yùn)行時(shí)權(quán)限是 6.0 的新特性,使用該類可以省略對(duì)版本的判斷當(dāng)權(quán)限申請(qǐng)被拒絕并且shouldShowRequestPermissionRationale() 返回 false 就表示勾選了不再詢問。轉(zhuǎn)到設(shè)置界面現(xiàn)在我們唯一能做的就是跳轉(zhuǎn)到我們 App 的設(shè)置界面,讓用戶手動(dòng)開啟權(quán)限了。

也就是這幾行代碼,上面已經(jīng)貼出,方便大家參考:

Intent intent = new Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS);

Uri uri = Uri.fromParts("package", getPackageName(), null);

intent.setData(uri);

startActivityForResult(intent, REQUEST_PERMISSION_SETTING);

·當(dāng)然,你也可以先彈出對(duì)話框詢問用戶是否要授予權(quán)限,然后再跳轉(zhuǎn)。

跳轉(zhuǎn)到設(shè)置界面調(diào)用的是 startActivityForResult() 而不是 startActivity() 。

在 onActivityResult() 中沒有必要對(duì) resultCode 進(jìn)行判斷,因?yàn)橛脩糁荒芡ㄟ^返回鍵才能回到我們的 App 中,所以 resultCode 總是為 RESULT_CANCEL。

在 onActivityResult() 中還需要對(duì)權(quán)限進(jìn)行判斷,因?yàn)橛脩粲锌赡軟]有授權(quán)就返回了!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容