2017-12-29

Android 6.0之后的權(quán)限

6.0之前,只要在mainfest申請(qǐng)即可。
6.0之后:

兩種辦法:
a:targetSdk如果設(shè)置為22及以下,則同6.0之前,直接在清單文件申請(qǐng)即可。
b:targetSdk>=23,動(dòng)態(tài)申請(qǐng)權(quán)限。
思路:應(yīng)用啟動(dòng)或在需要權(quán)限的時(shí)候判斷是否已有對(duì)應(yīng)權(quán)限,若無(wú),則對(duì)需要的權(quán)限進(jìn)行申請(qǐng)。若用戶拒絕,做出對(duì)應(yīng)的處理。
動(dòng)態(tài)申請(qǐng)權(quán)限:
流程:清單文件申請(qǐng)—–>權(quán)限檢查—–>申請(qǐng)權(quán)限—–>權(quán)限回調(diào)

1.清單文件申請(qǐng)

if (ContextCompat.checkSelfPermission(thisActivity,
Manifest.permission.READ_CONTACTS)
!= PackageManager.PERMISSION_GRANTED) {
}else{
//
}
這里用了 ContextCompat.checkSelfPermission的API,第一個(gè)參數(shù)是Context,第二個(gè)參數(shù)是權(quán)限。

2.申請(qǐng)權(quán)限

ActivityCompat.requestPermissions(thisActivity,
new String[]{Manifest.permission.READ_CONTACTS},
MY_PERMISSIONS_REQUEST_READ_CONTACTS);

這里使用了requestPermissions API,前兩個(gè)參數(shù)同checkSelfPermission,第三個(gè)參數(shù)是int型的權(quán)限請(qǐng)求碼。
如果想申請(qǐng)權(quán)限時(shí)附帶解釋,可以使用下面這個(gè)API
ActivityCompat.shouldShowRequestPermissionRationale(thisActivity,Manifest.permission.READ_CONTACTS)

3.權(quán)限申請(qǐng)回調(diào)

實(shí)現(xiàn)OnRequestPermissionsResultCallback接口中的onRequestPermissionsResult方法。

@Override
public void onRequestPermissionsResult(int requestCode,
String permissions[], int[] grantResults) {
switch (requestCode) {
case MY_PERMISSIONS_REQUEST_READ_CONTACTS: {
// If request is cancelled, the result arrays are empty.
if (grantResults.length > 0
&& grantResults[0] == PackageManager.PERMISSION_GRANTED) {

            // permission was granted, yay! Do the
            // contacts-related task you need to do.

        } else {

            // permission denied, boo! Disable the
            // functionality that depends on this permission.
        }
        return;
    }
}

}

第一個(gè)參數(shù):請(qǐng)求碼,第二個(gè)參數(shù)請(qǐng)求權(quán)限的集合,第三個(gè)參數(shù)對(duì)應(yīng)權(quán)限申請(qǐng)的結(jié)果集。
如果被用戶點(diǎn)擊返回,則結(jié)果集長(zhǎng)度為0。
grantResults[0] == PackageManager.PERMISSION_GRANTED表示 第一個(gè)申請(qǐng)的權(quán)限已被授權(quán)。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容