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

Android EasyPermissions官方庫高效處理權限相關教程

 更新時間:2017年11月13日 09:33:56   投稿:mrr  
Easypermissions簡化了Android M的運行時權限的申請、結果處理、判斷等步驟。這篇文章主要介紹了Android EasyPermissions官方庫高效處理權限相關教程,需要的朋友可以參考下

介紹:

easypermission庫是一個簡化基本的系統(tǒng)權限邏輯的庫,可用于在Android M或者更高版本上。

1 相關文檔

官方文檔:

https://github.com/googlesamples/easypermissions

運行時權限官方文檔解釋:

https://developer.android.com/training/permissions/requesting.html

2 為什么使用Easypermissions

Android M對權限系統(tǒng)進行了改變。Android M之前所需權限只需要在AndroidManifest中申請即可。但更新Android M系統(tǒng)后,部分“Dangerous Permission”需要在運行時詢問申請。

導入EasyPermissions依賴庫:

在Module的build.gradle中添加以下代碼。

dependencies {
 compile 'pub.devrel:easypermissions:1.0.1'
}

依賴庫配置完成后,開始使用。

使用步驟

1. 使用EasyPermissions檢查權限:

權限可以是單個,也可以是一些列。在EasyPermission庫中,使用EasyPermissions#hasPermissions(...)檢查若干權限。

<code> /**
  *
  * @param context
  * return true:已經獲取權限
  * return false: 未獲取權限,主動請求權限
  */
 public static boolean checkPermission(Activity context,String[] perms) {
  return EasyPermissions.hasPermissions(context, perms);
 }</code>
EasyPermissions.hasPermissions():

第一個參數(shù) : Context參數(shù).例如,Activity對象。

第二個參數(shù) : 一些系列的權限。例如,public final static String[] PERMS_WRITE ={Manifest.permission.WRITE_EXTERNAL_STORAGE};

2. 使用EasyPermissions請求權限:

檢查后,發(fā)覺用戶沒有賦予權限,這時候需要代碼請求權限,讓用戶同意。

在EasyPermission庫中,使用EasyPermissions#requestPermissions,來請求權限。

<code><code><code> /**
  * 請求權限
  * @param context
  */
 public static void requestPermission(Activity context,String tip,int requestCode,String[] perms) {
  EasyPermissions.requestPermissions(context, tip,requestCode,perms);
 }</code></code></code>
EasyPermissions.requestPermissions():

第一個參數(shù):Context對象 第二個參數(shù):權限彈窗上的文字提示語。告訴用戶,這個權限用途。 第三個參數(shù):這次請求權限的唯一標示,code。 第四個參數(shù) : 一些系列的權限。

3. EasyPermissions響應請求結果:

請求后,彈出系統(tǒng)權限彈窗,剩下是用戶是否授權操作。權限結果是回調在Activity或者Fragment中的重寫的onRequestPermissionsResult()方法中。

<code><code><code>public class MainActivity extends AppCompatActivity implements EasyPermissions.PermissionCallbacks{
 //.....省略部分代碼。
 /**
  * 重寫onRequestPermissionsResult,用于接受請求結果
  *
  * @param requestCode
  * @param permissions
  * @param grantResults
  */
 @Override
 public void onRequestPermissionsResult(int requestCode, 
  @NonNull String[] permissions, @NonNull int[] grantResults) {
  super.onRequestPermissionsResult(requestCode, permissions, grantResults);
  //將請求結果傳遞EasyPermission庫處理
  EasyPermissions.onRequestPermissionsResult(requestCode, permissions, grantResults, this);
 }
 /**
  * 請求權限成功。
  * 可以彈窗顯示結果,也可執(zhí)行具體需要的邏輯操作
  *
  * @param requestCode
  * @param perms
  */
 @Override
 public void onPermissionsGranted(int requestCode, List<string> perms) {
  ToastUtils.showToast(getApplicationContext(), "用戶授權成功");
 }
 /**
  * 請求權限失敗
  *
  * @param requestCode
  * @param perms
  */
 @Override
 public void onPermissionsDenied(int requestCode, List<string> perms) {
  ToastUtils.showToast(getApplicationContext(), "用戶授權失敗");
  /**
   * 若是在權限彈窗中,用戶勾選了'NEVER ASK AGAIN.'或者'不在提示',且拒絕權限。
   * 這時候,需要跳轉到設置界面去,讓用戶手動開啟。
   */
  if (EasyPermissions.somePermissionPermanentlyDenied(this, perms)) {
   new AppSettingsDialog.Builder(this).build().show();
  }
 }
}</string></string></code></code></code>

將權限結果傳遞給EasyPermissions.onRequestPermissionsResult()來處理。、

EasyPermissions.onRequestPermissionsResult()方法:

第一個參數(shù): 請求的code 第二個參數(shù): 一些列的請求權限 第三個參數(shù): 用戶授權的結果 第四個參數(shù): 權限回調監(jiān)聽器
這里不需要手寫判斷權限是否成功的邏輯操作,而會在EasyPermissions.PermissionCallbacks監(jiān)聽器中響應。

EasyPermissions.PermissionCallbacks接口:

onPermissionsGranted():

用戶授權成功,接下來執(zhí)行具體需要的邏輯操作

onPermissionsDenied():

用戶授權失敗,處理失敗的邏輯。

注意:若是在權限彈窗中,用戶勾選了'NEVER ASK AGAIN.'或者'不在提示',且拒絕權限。 這時候,需要跳轉到設置界面去,讓用戶手動開啟。

你可能并不滿足,需要手動調用邏輯處理方法。EasyPermissions庫為你考慮好了,具備強大之處。當用戶同意權限后,可以不需要通過監(jiān)聽器方式來實現(xiàn),直接調用相關的邏輯代碼的方法。只需要使用@AfterPermissionGranted注解標注邏輯處理的方法。

4. @AfterPermissionGranted注解:

@AfterPermissionGranted注解為了提供方便,但可以添加也可以不添加,是可選的。

好處:

使用了該注解,當權限請求被用戶同意后,會根據(jù)請求code來執(zhí)行,相應的含有@AfterPermissionGranted注解的方法。

簡化了請求成功操作流程,不需要在EasyPermissions.onRequestPermissionsResult()的回調監(jiān)聽器中請求成功的方法中,再次手動調用,獲取權限后需要操作的邏輯代碼。

以下代碼,請求寫入磁盤的權限,當用戶同意權限后,彈出一個Toast彈窗的邏輯處理操作。

<code><code><code><code><code><code><code><code> @AfterPermissionGranted(Constance.WRITE_PERMISSION_CODE) 是可選的
 public void onPermissionsSuccess() {
  ToastUtils.showToast(getApplicationContext(), "用戶授權成功");
 }</code></code></code></code></code></code></code></code>

當用戶同意權限,該方法不需要手動調用,會匹配到的Constance.WRITE_PERMISSION_CODE請求碼,自動執(zhí)行。

5. 使用EasyPermissions處理權限被拒的情況:

在權限彈窗中,用戶可能直接拒絕權限,下次權限請求依舊會彈出該權限彈窗。除此之外,還可以勾選'NEVER ASK AGAIN.'或者'不在提示',且拒絕權限,下次請求權限,彈窗不能彈出,無法讓用戶授權。這時候,需要跳轉到設置界面去,讓用戶手動開啟。

在EasyPermission庫中,使用EasyPermissions.somePermissionPermanentlyDenied()來處理,是否勾選不再提示的選項。

<code><code><code><code><code><code><code><code><code> /**
  * 請求權限失敗
  *
  * @param requestCode
  * @param perms
  */
 @Override
 public void onPermissionsDenied(int requestCode, List<string> perms) {
  ToastUtils.showToast(getApplicationContext(), "用戶授權失敗");
  /**
   * 若是在權限彈窗中,用戶勾選了'NEVER ASK AGAIN.'或者'不在提示',且拒絕權限。
   * 這時候,需要跳轉到設置界面去,讓用戶手動開啟。
   */
  if (EasyPermissions.somePermissionPermanentlyDenied(this, perms)) {
   new AppSettingsDialog.Builder(this).build().show();
  }
 }
 @Override
 protected void onActivityResult(int requestCode, int resultCode, Intent data) {
  super.onActivityResult(requestCode, resultCode, data);
  switch (requestCode) {
   //當從軟件設置界面,返回當前程序時候
   case AppSettingsDialog.DEFAULT_SETTINGS_REQ_CODE:
    //執(zhí)行Toast顯示或者其他邏輯處理操作
    break;
  } 
 }</string></code></code></code></code></code></code></code></code></code>

以上代碼是,當無法彈出權限彈框,直接跳轉到設置界面去,讓用戶手動開啟權限。

當從設置界面返回時候,結果會在Activity或者Fragment中onActivityResult()響應。

運行效果,如下:

總結

以上所述是小編給大家介紹的Android EasyPermissions官方庫高效處理權限相關教程,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!

相關文章

  • 詳解Android中用于線程處理的AsyncTask類的用法及源碼

    詳解Android中用于線程處理的AsyncTask類的用法及源碼

    這篇文章主要介紹了Android中用于線程處理的AsyncTask類的用法及源碼,講到了實現(xiàn)AsyncTask中所用到的Handler及線程池等要點,需要的朋友可以參考下
    2016-05-05
  • Android UTF-8轉碼實例詳解

    Android UTF-8轉碼實例詳解

    這篇文章主要介紹了Android UTF-8轉碼實例詳解的相關資料,需要的朋友可以參考下
    2017-03-03
  • Android使用Opengl錄像時添加水印

    Android使用Opengl錄像時添加水印

    這篇文章主要為大家詳細介紹了Android使用Opengl錄像時添加水印,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-04-04
  • Android 動態(tài)添加view或item并獲取數(shù)據(jù)的實例

    Android 動態(tài)添加view或item并獲取數(shù)據(jù)的實例

    下面小編就為大家?guī)硪黄狝ndroid 動態(tài)添加view或item并獲取數(shù)據(jù)的實例。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-10-10
  • Android操作系統(tǒng)介紹之11種傳感器

    Android操作系統(tǒng)介紹之11種傳感器

    Android是一種基于Linux的自由及開放源代碼的操作系統(tǒng),主要使用于移動設備,如智能手機和平板電腦,Android是一種基于Linux的自由及開放源代碼的操作系統(tǒng),主要使用于移動設備,如智能手機和平板電腦,非常不錯,具有參考借鑒價值,感興趣的朋友一起學習吧
    2016-07-07
  • Android 安全加密:Https編程詳解

    Android 安全加密:Https編程詳解

    本文主要介紹Android安全加密Https編程的知識,這里整理了詳細的資料及說明解決方案和驗證,有興趣的小伙伴可以參考下
    2016-09-09
  • Android實現(xiàn)雅虎新聞摘要加載視差動畫效果

    Android實現(xiàn)雅虎新聞摘要加載視差動畫效果

    這篇文章主要介紹了Android實現(xiàn)雅虎新聞摘要加載視差動畫效果,通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-08-08
  • 如何使用Flutter實現(xiàn)手寫簽名效果

    如何使用Flutter實現(xiàn)手寫簽名效果

    Flutter插件提供了用于繪制平滑簽名的簽名板,下面這篇文章主要給大家介紹了關于如何使用Flutter實現(xiàn)手寫簽名效果的相關資料,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-12-12
  • Android自定義ViewGroup實現(xiàn)九宮格布局

    Android自定義ViewGroup實現(xiàn)九宮格布局

    這篇文章主要為大家詳細介紹了Android如何通過自定義ViewGroup實現(xiàn)九宮格布局,文中的示例代碼講解詳細,感興趣的小伙伴可以了解一下
    2022-12-12
  • ProgressBar、ProgessDialog-用法(詳解)

    ProgressBar、ProgessDialog-用法(詳解)

    下面小編就為大家?guī)硪黄狿rogressBar、ProgessDialog-用法(詳解)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-06-06

最新評論