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

首頁 > 系統 > Android > 正文

Android 6.0權限申請詳解及權限資料整理

2019-12-12 05:05:08
字體:
來源:轉載
供稿:網友

在android 6.0開始,部分的權限需要我們動態申請,也就是說當我們的打開app的時候系統不會主動像您申請app所需要的部分權限,需要客戶在使用app的時候主動的去申請。

一、權限的申請兩步驟:

1、權限申請:

/** * @param permissions需要申請的權限 * @param requestCode申請回調code */ public static void requestPermissions(final @NonNull Activity activity,final @NonNullString[] permissions, final int requestCode)

2、申請回調處理:

 /** *@param requestCode申請回調code *@param permissions申請的權限 *@param grantResults返回申請狀態PackageManager#PERMISSION_GRANTED(授予) PackageManager#PERMISSION_DENIED(拒絕) */ public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults)

二、Fragment中運行時權限的特殊處理

在Fragment中申請權限,不要使用ActivityCompat.requestPermissions, 直接使用Fragment的requestPermissions方法,否則會回調到Activity的onRequestPermissionsResult如果在Fragment中嵌套Fragment,在子Fragment中使用requestPermissions方 法,onRequestPermissionsResult不會回調回來,建議使用 getParentFragment().requestPermissions方法,

這個方法會回調到父Fragment中的onRequestPermissionsResult,加入以下代碼可以把回調透傳到子Fragment

 @Override public void  onRequestPermissionsResult(int requestCode, String[] permissions, int[]  grantResults) {   super.onRequestPermissionsResult(requestCode,  permissions, grantResults);   List  fragments = getChildFragmentManager().getFragments();   if (fragments != null)  {   for (Fragment  fragment : fragments) {      if (fragment !=  null) {        fragment.onRequestPermissionsResult(requestCode,permissions,grantResults);      }   } }}

三、權限申請的簡單封裝

 public class RequestPermissions {   public static intREQUEST_EXTERNAL_STORAGE = 1;   public static String[]PERMISSIONS_STORAGE = {        Manifest.permission.READ_EXTERNAL_STORAGE,        Manifest.permission.WRITE_EXTERNAL_STORAGE   };   /**   *讀寫權限申請回調true有權限false無權限   *   * @param mContext   */   public static voidwriteExternalStorage(final Context mContext, PermissionCallBack mCallBack) {   //檢查是否擁有相應的權限      int permission =ActivityCompat.checkSelfPermission(mContext,Manifest.permission.WRITE_EXTERNAL_STORAGE);   //沒有權限發起申請   if (permission !=PackageManager.PERMISSION_GRANTED) {   //6.0及以上版本才需要申請權限      if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.M)        ActivityCompat.requestPermissions((Activity) mContext,PERMISSIONS_STORAGE,REQUEST_EXTERNAL_STORAGE);      else {        mCallBack.setOnPermissionListener(false);      }   } else {      mCallBack.setOnPermissionListener(true);   } }   /**   *讀寫權限申請回調true有權限false無權限   *   * @param mContext   */ public static voidwriteExternalStorage(final Context mContext, PermissionCallBack mCallBack, intrequestCode) {   //檢查是否擁有相應的權限   int permission =ActivityCompat.checkSelfPermission(mContext,Manifest.permission.WRITE_EXTERNAL_STORAGE);   //沒有權限發起申請   if (permission !=PackageManager.PERMISSION_GRANTED) {      //6.0及以上版本才需要申請權限      if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.M)        ActivityCompat.requestPermissions((Activity) mContext,PERMISSIONS_STORAGE,requestCode);      else {        mCallBack.setOnPermissionListener(false);      }   } else {      mCallBack.setOnPermissionListener(true);   } } /** *權限申請回調,需要在你調用的Activity中onRequestPermissionsResult調用該方法true申請權限成功false申請權限失敗 * * @param requestCode * @param permissions * @param grantResults */ public static void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions,@NonNull int[] grantResults, PermissionCallBack mCallBack) {   if (requestCode ==REQUEST_EXTERNAL_STORAGE) {      //判斷權限是否申請成功      if(grantResults.length > 0 && grantResults[0] ==PackageManager.PERMISSION_GRANTED) {        mCallBack.setOnPermissionListener(true);      } else {        mCallBack.setOnPermissionListener(false);      }      return;   } } /** * 6.0以下申請打開權限管理 * * @param mContext */ public static void openPre(final Context mContext) {   RemindDialogUtil.showRemindDialog(mContext, "

主站蜘蛛池模板:
福州市|
青州市|
高碑店市|
衢州市|
咸阳市|
瓦房店市|
措美县|
桑植县|
中江县|
泉州市|
平谷区|
三穗县|
阿克陶县|
宿迁市|
蚌埠市|
兰西县|
镶黄旗|
河北区|
枣阳市|
张家港市|
舒城县|
岚皋县|
红安县|
阿坝|
阿鲁科尔沁旗|
万全县|
克山县|
方城县|
浪卡子县|
灵宝市|
会昌县|
建德市|
故城县|
永昌县|
韶关市|
肇东市|
枣阳市|
桃江县|
赤水市|
城步|
通榆县|