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

首頁 > 系統 > Android > 正文

Android 手動獲取判斷處理權限

2019-10-23 18:29:37
字體:
來源:轉載
供稿:網友

主要用到的幾個方法:

//檢查權限int checkSelfPermission(String)//申請權限void requestPermissions(int, String...)//是否應該顯示請求權限的說明boolean shouldShowRequestPermissionRationale(String)//處理權限結果回調void onRequestPermissionsResult(int,String[],int[])

是否有權限常量標識:

PackageManager.PERMISSION_DENIED:拒絕了。PackageManager.PERMISSION_GRANTED:授權了

上述四個方法中,前三個方法在support-v4的ActivityCompat中都有,建議使用兼容庫中的方法。最后一個方法是用戶授權或者拒絕某個權限組時系統會回調Activity或者Fragment中的方法。

1. checkSelfPermission(String)

檢查權限

1. 檢查某一個權限的當前狀態,你應該在請求某個權限時檢查這個權限是否已經被用戶授權,已經授權的權限重復申請可能會讓用戶產生厭煩。

2. 該方法有一個參數是權限名稱,有一個int的返回值,用這個值與上面提到的兩個常量做比較可判斷檢查的權限當前的狀態。

if (ContextCompat.checkSelfPermission(context, Manifest.permission.READ_CONTACTS)    != PackageManager.PERMISSION_GRANTED) {  // 沒有權限,可以在這里重新申請權限。}else{  // 有權限了。}

2. requestPermissions(int, String…)

申請權限

請求用戶授權幾個權限,調用后系統會顯示一個請求用戶授權的提示對話框,App不能配置和修改這個對話框,如果需要提示用戶這個權限相關的信息或說明,需要在調用 requestPermissions() 之前處理

該方法有兩個參數:

int requestCode: 會在回調onRequestPermissionsResult()時返回,用來判斷是哪個授權申請的回調。

String[] permissions: 權限數組,你需要申請的的權限的數組。

由于該方法是異步的,所以無返回值,當用戶處理完授權操作時,會回調Activity或者Fragment的onRequestPermissionsResult()方法。

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

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

處理權限結果回調

1. 該方法在Activity/Fragment中應該被重寫,當用戶處理完授權操作時,系統會自動回調該方法

2. 該方法有三個參數:

int requestCode: 在調用requestPermissions()時的第一個參數。

String[] permissions: 權限數組,在調用requestPermissions()時的第二個參數。

int[] grantResults: 授權結果數組,對應permissions,具體值和上方提到的PackageManager中的兩個常量做比較。

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

4. shouldShowRequestPermissionRationale(String)

是否應該顯示請求權限的說

1.第一次請求權限時,用戶拒絕了,調用shouldShowRequestPermissionRationale()后返回true,應該顯示一些為什么需要這個權限的說明。

2.用戶在第一次拒絕某個權限后,下次再次申請時,授權的dialog中將會出現“不再提醒”選項,一旦選中勾選了,那么下次申請將不會提示用戶。

3.第二次請求權限時,用戶拒絕了,并選擇了“不在提醒”的選項,調用shouldShowRequestPermissionRationale()后返回false。

4.設備的策略禁止當前應用獲取這個權限的授權:shouldShowRequestPermissionRationale()返回false 。

5.加這個提醒的好處在于,用戶拒絕過一次權限后我們再次申請時可以提醒該權限的重要性,面得再次申請時用戶勾選“不再提醒”并決絕,導致下次申請權限直接失敗。

if (ContextCompat.checkSelfPermission(this, Manifest.permission.READ_CONTACTS) != PackageManager.PERMISSION_GRANTED) {// 沒有權限。 if (ActivityCompat.shouldShowRequestPermissionRationale(this, Manifest.permission.READ_CONTACTS)) {   // 用戶拒絕過這個權限了,應該提示用戶,為什么需要這個權限。 } else {  // 申請授權。  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) {    // 權限被用戶同意。   } else {    // 權限被用戶拒絕了。   }   return;  } }}

以上就是本文的全部內容,希望本文的內容對大家的學習或者工作能帶來一定的幫助,同時也希望多多支持VEVB武林網!


注:相關教程知識閱讀請移步到Android開發頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 遂宁市| 沾化县| 四会市| 平利县| 团风县| 建湖县| 德钦县| 武义县| 韶关市| 吉木乃县| 子长县| 甘孜| 南宫市| 台东县| 卢龙县| 巩留县| 乐至县| 湘潭县| 峨山| 双峰县| 钦州市| 中阳县| 青河县| 阳山县| 靖远县| 通州区| 济阳县| 黔西县| 兴和县| 长武县| 大余县| 天镇县| 来安县| 江达县| 山阴县| 旺苍县| 涟水县| 福贡县| 吉木乃县| 邹城市| 沁阳市|