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

首頁 > 系統 > Android > 正文

Android基于注解的6.0權限動態請求框架詳解

2019-10-22 18:12:45
字體:
來源:轉載
供稿:網友

前言

安卓6.0之后,一些敏感權限需要進行動態請求,雖說編寫請求授權代碼并不難,但是每次一需要權限就需要在視圖中添加一段代碼,嚴重影響代碼美觀,同時也增加了一點點工作量。

于是,小盆友閑暇之余基于AOP封裝了一個基于注解的權限請求框架。如果有幸加入您的項目,使用過程中有問題或是有哪些不便,請留言區或github上與我交流,共同進步。如果喜歡這個框架請給個star和??。

github地址:https://github.com/zincPower/JPermission

先上圖,看看效果。。。第一次錄制,效果比較差,請將就下。可下載源碼進行親自操作。

Android,權限動態,android6.0,權限框架,權限請求框架

示例圖

如何接入

1、在項目的gradle中添加如下代碼

buildscript {  repositories {    google()    jcenter()  }  dependencies {    classpath 'com.android.tools.build:gradle:3.0.0'    classpath 'com.hujiang.aspectjx:gradle-android-plugin-aspectjx:1.1.0' //添加這一行  }}allprojects {  repositories {    google()    jcenter()    maven { url 'https://jitpack.io' }   //添加這一行  }}

值得一提:如果你的工程里gradle版本是3.0.0以上,請使用aspectjx:1.1.0以上版本,否則會報Required: PROJECT, SUB_PROJECTS, EXTERNAL_LIBRARIES. Found: EXTERNAL_LIBRARIES, PROJECT, PROJECT_LOCAL_DEPS, SUB_PROJECTS, SUB_PROJECTS_LOCAL_DEPS

aspectjx歷史版本查看地址:https://github.com/HujiangTechnology/gradle_plugin_android_aspectjx/blob/master/CHANGELOG.md

2、在app的module中增加如下

代碼

apply plugin: 'com.android.application'apply plugin: 'android-aspectjx' //添加這一行

在依賴中增加:

compile 'com.github.zincPower:JPermission:0.1'

簡單使用

1、在需要請求權限的方法加上注解 @Permission,請求權限可以多個,如下

//requestCode可設可不設,框架自帶默認值。在取消和拒絕回調中,會將這個值返回,用于各自請求邏輯處理@Permission({Manifest.permission.WRITE_EXTERNAL_STORAGE}, requestCode = 100)private void requestOnePermission() {  //do something}

2、編寫取消和拒絕(即點擊了“不再提示”)回調,如下:

@PermissionCanceled()private void cancel(CancelInfo cancelInfo) {  //do something when the permission was canceled.}@PermissionDenied()private void deny(DenyInfo denyInfo) {  //do something when the permission was denied.}

值得一提:如果被拒絕,可以彈一個對話框,詢問是否要前往系統權限頁面讓用戶自己手動開啟。如果需要的話,可以通過以下代碼前往(對話框自行解決,本框架不包含):

//前往開啟權限的界面JPermissionUtil.goToMenu(context);

高級使用

1、請求manifest中的所有權限(主要用于app開啟時,進行一次權限請求)

//不需要回調監聽JPermissionUtil.requestAllPermission(this);//需要回調監聽JPermissionUtil.requestAllPermission(this, new IPermission() {      @Override      public void ganted() {        Log.i(JPermissionHelper.TAG, "ganted====》申請manifest的全部");      }      @Override      public void denied(int requestCode, List<String> denyList) {        Log.i(JPermissionHelper.TAG, "denied====》申請manifest的全部{code=" + requestCode + ";denyList=" + denyList + "}");      }      @Override      public void canceled(int requestCode) {        Log.i(JPermissionHelper.TAG, "canceled===》申請manifest的全部{code= " + requestCode + "}");      }    });

某些特殊情況,初始請求中比較敏感(例如:讀取手機短信 或 定位權限 等),可以使用以下代碼進行剔除初始請求中所包含的權限

List<String> excluePermission = new ArrayList<>();excluePermission.add(Manifest.permission.CAMERA);excluePermission.add(Manifest.permission.ACCESS_FINE_LOCATION);//不需要回調JPermissionUtil.requestAllPermission(this, excluePermission);//需要回調JPermissionUtil.requestAllPermission(this, excluePermission, new IPermission() {  @Override  public void ganted() {      }  @Override  public void denied(int requestCode, List<String> denyList) {  }  @Override  public void canceled(int requestCode) {  }});

2、配置前往的系統權限頁,框架自帶了默認的系統權限頁,但如需根據不同品牌進行個性化設置,可在代碼增加如下代碼

//第一個參數為品牌,框架會根據Build.MANUFACTURER進行匹配(大小寫均可)//第二個參數為需要處理的類class文件,需要實現IMenu接口JPermissionUtil.setManuFacturer("genymotion", MyTestGenymotionMenu.class);

3、設置有回調值的取消和拒絕回調。如果請求權限時,填了requestCode=200,則取消或拒絕時會調用requestCode相同(此處即為200)的方法。

@PermissionCanceled(requestCode = 200)private void cancelCode200(CancelInfo cancelInfo){  Toast.makeText(this, "cancel__200", Toast.LENGTH_SHORT).show();}@PermissionDenied(requestCode = 200)private void denyCode200(DenyInfo denyInfo){  Toast.makeText(this, "deny__200", Toast.LENGTH_SHORT).show();}

值得一提:調用了requestCode相同的方法,同時也會調用不設置requestCode的方法。

4、service和fragment中均可使用

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VEVB武林網。


注:相關教程知識閱讀請移步到Android開發頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 石泉县| 和平县| 额敏县| 两当县| 黔江区| 伊川县| 德州市| 鲁山县| 农安县| 平乡县| 贵溪市| 宣威市| 平阴县| 雅安市| 美姑县| 乌海市| 永和县| 山东| 榕江县| 溧阳市| 呼和浩特市| 疏附县| 龙岩市| 咸阳市| 东阿县| 白水县| 嘉荫县| 临泉县| 宣汉县| 营口市| 恩施市| 重庆市| 廉江市| 清镇市| 修武县| 若羌县| 柳林县| 甘南县| 昭平县| 彝良县| 五寨县|