国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 系統(tǒng) > Android > 正文

Android 手動(dòng)獲取判斷處理權(quán)限

2019-12-12 02:57:01
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

主要用到的幾個(gè)方法:

//檢查權(quán)限int checkSelfPermission(String)//申請(qǐng)權(quán)限void requestPermissions(int, String...)//是否應(yīng)該顯示請(qǐng)求權(quán)限的說(shuō)明boolean shouldShowRequestPermissionRationale(String)//處理權(quán)限結(jié)果回調(diào)void onRequestPermissionsResult(int,String[],int[])

是否有權(quán)限常量標(biāo)識(shí):

PackageManager.PERMISSION_DENIED:拒絕了。PackageManager.PERMISSION_GRANTED:授權(quán)了

上述四個(gè)方法中,前三個(gè)方法在support-v4的ActivityCompat中都有,建議使用兼容庫(kù)中的方法。最后一個(gè)方法是用戶授權(quán)或者拒絕某個(gè)權(quán)限組時(shí)系統(tǒng)會(huì)回調(diào)Activity或者Fragment中的方法。

1. checkSelfPermission(String)

檢查權(quán)限

1. 檢查某一個(gè)權(quán)限的當(dāng)前狀態(tài),你應(yīng)該在請(qǐng)求某個(gè)權(quán)限時(shí)檢查這個(gè)權(quán)限是否已經(jīng)被用戶授權(quán),已經(jīng)授權(quán)的權(quán)限重復(fù)申請(qǐng)可能會(huì)讓用戶產(chǎn)生厭煩。

2. 該方法有一個(gè)參數(shù)是權(quán)限名稱,有一個(gè)int的返回值,用這個(gè)值與上面提到的兩個(gè)常量做比較可判斷檢查的權(quán)限當(dāng)前的狀態(tài)。

if (ContextCompat.checkSelfPermission(context, Manifest.permission.READ_CONTACTS)    != PackageManager.PERMISSION_GRANTED) {  // 沒(méi)有權(quán)限,可以在這里重新申請(qǐng)權(quán)限。}else{  // 有權(quán)限了。}

2. requestPermissions(int, String…)

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

請(qǐng)求用戶授權(quán)幾個(gè)權(quán)限,調(diào)用后系統(tǒng)會(huì)顯示一個(gè)請(qǐng)求用戶授權(quán)的提示對(duì)話框,App不能配置和修改這個(gè)對(duì)話框,如果需要提示用戶這個(gè)權(quán)限相關(guān)的信息或說(shuō)明,需要在調(diào)用 requestPermissions() 之前處理

該方法有兩個(gè)參數(shù):

int requestCode: 會(huì)在回調(diào)onRequestPermissionsResult()時(shí)返回,用來(lái)判斷是哪個(gè)授權(quán)申請(qǐng)的回調(diào)。

String[] permissions: 權(quán)限數(shù)組,你需要申請(qǐng)的的權(quán)限的數(shù)組。

由于該方法是異步的,所以無(wú)返回值,當(dāng)用戶處理完授權(quán)操作時(shí),會(huì)回調(diào)Activity或者Fragment的onRequestPermissionsResult()方法。

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

3. onRequestPermissionsResult(int,String[],int[])

處理權(quán)限結(jié)果回調(diào)

1. 該方法在Activity/Fragment中應(yīng)該被重寫(xiě),當(dāng)用戶處理完授權(quán)操作時(shí),系統(tǒng)會(huì)自動(dòng)回調(diào)該方法

2. 該方法有三個(gè)參數(shù):

int requestCode: 在調(diào)用requestPermissions()時(shí)的第一個(gè)參數(shù)。

String[] permissions: 權(quán)限數(shù)組,在調(diào)用requestPermissions()時(shí)的第二個(gè)參數(shù)。

int[] grantResults: 授權(quán)結(jié)果數(shù)組,對(duì)應(yīng)permissions,具體值和上方提到的PackageManager中的兩個(gè)常量做比較。

@Overridepublic void onRequestPermissionsResult(int requestCode, String permissions[], int[] grantResults) {  switch (requestCode) {    case MMM: {      if (grantResults.length > 0        && grantResults[0] == PackageManager.PERMISSION_GRANTED) {        // 權(quán)限被用戶同意,可以做你要做的事情了。      } else {        // 權(quán)限被用戶拒絕了,可以提示用戶,關(guān)閉界面等等。      }      return;    }  }} 

4. shouldShowRequestPermissionRationale(String)

是否應(yīng)該顯示請(qǐng)求權(quán)限的說(shuō)

1.第一次請(qǐng)求權(quán)限時(shí),用戶拒絕了,調(diào)用shouldShowRequestPermissionRationale()后返回true,應(yīng)該顯示一些為什么需要這個(gè)權(quán)限的說(shuō)明。

2.用戶在第一次拒絕某個(gè)權(quán)限后,下次再次申請(qǐng)時(shí),授權(quán)的dialog中將會(huì)出現(xiàn)“不再提醒”選項(xiàng),一旦選中勾選了,那么下次申請(qǐng)將不會(huì)提示用戶。

3.第二次請(qǐng)求權(quán)限時(shí),用戶拒絕了,并選擇了“不在提醒”的選項(xiàng),調(diào)用shouldShowRequestPermissionRationale()后返回false。

4.設(shè)備的策略禁止當(dāng)前應(yīng)用獲取這個(gè)權(quán)限的授權(quán):shouldShowRequestPermissionRationale()返回false 。

5.加這個(gè)提醒的好處在于,用戶拒絕過(guò)一次權(quán)限后我們?cè)俅紊暾?qǐng)時(shí)可以提醒該權(quán)限的重要性,面得再次申請(qǐng)時(shí)用戶勾選“不再提醒”并決絕,導(dǎo)致下次申請(qǐng)權(quán)限直接失敗。

if (ContextCompat.checkSelfPermission(this, Manifest.permission.READ_CONTACTS) != PackageManager.PERMISSION_GRANTED) {// 沒(méi)有權(quán)限。 if (ActivityCompat.shouldShowRequestPermissionRationale(this, Manifest.permission.READ_CONTACTS)) {   // 用戶拒絕過(guò)這個(gè)權(quán)限了,應(yīng)該提示用戶,為什么需要這個(gè)權(quán)限。 } else {  // 申請(qǐng)授權(quán)。  ActivityCompat.requestPermissions(thisActivity, new String[]{Manifest.permission.READ_CONTACTS}, MMM); }}...@Overridepublic void onRequestPermissionsResult(int requestCode, String permissions[], int[] grantResults) { switch (requestCode) {  case MMM: {   if (grantResults.length > 0    && grantResults[0] == PackageManager.PERMISSION_GRANTED) {    // 權(quán)限被用戶同意。   } else {    // 權(quán)限被用戶拒絕了。   }   return;  } }}

以上就是本文的全部?jī)?nèi)容,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作能帶來(lái)一定的幫助,同時(shí)也希望多多支持武林網(wǎng)!

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 诸城市| 搜索| 青神县| 望都县| 蛟河市| 峨眉山市| 天台县| 大同县| 玉山县| 文安县| 商水县| 平和县| 五大连池市| 买车| 咸阳市| 应用必备| 衡东县| 行唐县| 长宁区| 横峰县| 沂水县| 洛浦县| 南京市| 普兰店市| 郑州市| 安乡县| 兴国县| 辉南县| 会宁县| 庆阳市| 澎湖县| 班戈县| 天柱县| 靖远县| 民县| 龙胜| 锦州市| 牙克石市| 尤溪县| 义马市| 云安县|