欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Android 手動獲取判斷處理權限

 更新時間:2017年05月03日 08:48:02   作者:ganchuanpu  
本篇文章主要介紹了Android手動獲取判斷處理權限的方法,具有很好的參考價值。下面跟著小編一起來看下吧

主要用到的幾個方法:

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

是否有權限常量標識:

PackageManager.PERMISSION_DENIED:拒絕了。

PackageManager.PERMISSION_GRANTED:授權了

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

1. checkSelfPermission(String)

檢查權限

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

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

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

2. requestPermissions(int, String…)

申請權限

請求用戶授權幾個權限,調用后系統(tǒng)會顯示一個請求用戶授權的提示對話框,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中應該被重寫,當用戶處理完授權操作時,系統(tǒng)會自動回調該方法

2. 該方法有三個參數:

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

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

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

@Override
public 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);
 }
}
...
@Override
public void onRequestPermissionsResult(int requestCode, String permissions[], int[] grantResults) {
 switch (requestCode) {
  case MMM: {
   if (grantResults.length > 0
    && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
    // 權限被用戶同意。
   } else {
    // 權限被用戶拒絕了。
   }
   return;
  }
 }
}

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

相關文章

  • Android自定義View中Paint、Rect、Canvas介紹(一)

    Android自定義View中Paint、Rect、Canvas介紹(一)

    這篇文章主要為大家詳細介紹了Android自定義View中Paint、Rect、Canvas的相關資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-03-03
  • Android網絡編程之UDP通信模型實例

    Android網絡編程之UDP通信模型實例

    這篇文章主要介紹了Android網絡編程之UDP通信模型實例,本文給出了服務端代碼和客戶端代碼,需要的朋友可以參考下
    2014-10-10
  • Android圖片壓縮以及優(yōu)化實例

    Android圖片壓縮以及優(yōu)化實例

    本篇文章主要介紹了Android圖片壓縮以及優(yōu)化實例,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-06-06
  • Android開發(fā)中Eclipse報錯及對應處理方法總結

    Android開發(fā)中Eclipse報錯及對應處理方法總結

    這篇文章主要介紹了Android開發(fā)中Eclipse報錯及對應處理方法,實例匯總了使用eclipse開發(fā)Android項目過程中常見的錯誤提示及對應的處理技巧,需要的朋友可以參考下
    2015-12-12
  • Android 如何使用log4j及注意事項

    Android 如何使用log4j及注意事項

    這篇文章主要介紹了Android 如何使用log4j及注意事項的相關資料,需要的朋友可以參考下
    2017-01-01
  • 使用 Swift 語言編寫 Android 應用入門

    使用 Swift 語言編寫 Android 應用入門

    為了能順利使用這份向導,你需要: 1. 可以編譯Swift源碼的Linux環(huán)境。stdlib目前只能在Linux環(huán)境下編譯成安卓可用版本。在嘗試為安卓構建之前,確保你能夠參考Swift項目的README為Linux做編譯。
    2016-04-04
  • Android DrawerLayout實現抽屜效果實例代碼

    Android DrawerLayout實現抽屜效果實例代碼

    這篇文章主要介紹了Android DrawerLayout實現抽屜效果的實例代碼,非常不錯,具有參考借鑒價值,需要的朋友可以參考下
    2016-12-12
  • Android中HTTP請求中文亂碼解決辦法

    Android中HTTP請求中文亂碼解決辦法

    這篇文章主要介紹了Android中HTTP請求中文亂碼解決辦法的相關資料,希望通過本文能幫助到大家,讓大家解決中文亂碼的問題,需要的朋友可以參考下
    2017-09-09
  • Android 五大布局方式詳解

    Android 五大布局方式詳解

    本文主要介紹Android 五大布局的知識資料,這里整理了詳細的布局資料及實現示例代碼,和實現效果圖,有興趣的小伙伴可以參考下
    2016-09-09
  • Android控件之菜單的創(chuàng)建方式

    Android控件之菜單的創(chuàng)建方式

    本文給大家分享android控件菜單的兩種創(chuàng)建方式,非常不錯,具有參考借鑒價值,需要的朋友參考下吧
    2017-09-09

最新評論