android6.0权限动态申请框架permissiondispatcher的方法

作者:burn_wang 时间:2023-07-31 10:51:57 

1,添加依赖

在project的build.gradle文件中添加


dependencies {
 classpath 'com.android.tools.build:gradle:2.1.2'

classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8'
}

在module的build.gradle中添加


apply plugin: 'android-apt'
。。。。。。。
dependencies {
。。。。
compile 'com.github.hotchemi:permissionsdispatcher:2.3.1'
apt 'com.github.hotchemi:permissionsdispatcher-processor:2.3.1'
}

2,添加注解


package com.shilian.yibo;

import ....

/**
* 主页面
*/
@RuntimePermissions
public class MainActivity extends BaseActivity implements CompoundButton.OnCheckedChangeListener, View.OnClickListener {
@Override
protected void onCreate(Bundle savedInstanceState) {
 super.onCreate(savedInstanceState);
 setContentView(R.layout.activity_main);
 ButterKnife.bind(this);
 .....
}

@OnClick(R.id.textView_scan_code_home)
public void onClick(View view) {
 switch (view.getId()){
  case R.id.textView_scan_code_home:
   MainActivityPermissionsDispatcher.startScanWithCheck(this);
   break;
 }
}

@NeedsPermission(android.Manifest.permission.CAMERA)
void startScan() {
 startActivityForResult(new Intent(this, CaptureActivity.class), 1);
}

/**
 * OnShowRationale注解获取权限时给出提示的方法
 * */
@OnShowRationale(android.Manifest.permission.CAMERA)
void showRationaleForCamera(final PermissionRequest request) {
 new AlertDialog.Builder(this).setPositiveButton("知道了", new DialogInterface.OnClickListener() {
  @Override
  public void onClick(DialogInterface dialog, int which) {
   request.proceed();
  }
 }).setMessage("扫码需要获取相机权限").setCancelable(true).show();
}

/**
 * OnPermissionDenied注解拒绝授权时回调的方法
 * */
@OnPermissionDenied(android.Manifest.permission.CAMERA)
void onCameraDenied() {
 toast("相机权限未开启");
}

/**
 * OnNeverAskAgain注解当用户选择拒绝且不再询问时的回调方法
 * */
@OnNeverAskAgain(android.Manifest.permission.CAMERA)
void onCameraNeverAskAgain() {
 toast("相机权限未开启");
}

@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
 super.onRequestPermissionsResult(requestCode, permissions, grantResults);
 MainActivityPermissionsDispatcher.onRequestPermissionsResult(this,requestCode,grantResults);
}
}

注释说明

RuntimePermissions:必须的注释,用来注释要获取权限的activity或fragment

NeedsPermission:必须的注释,用来注释需要获取权限的方法

OnShowRationale:非必须的注释,提示用户为何要开启此权限,当用户拒绝后在册需要访问权限时调用

OnPermissionDenied:非必须的注释,用户选择拒绝时的提示

OnNeverAskAgain:非必须的注释,用户选择不再询问后的提示

获取权限的调用:从新编译程序会生成辅助类xxxPermissionsDispatcher,通过xxxPermissionsDispatcher.xxxWithCheck方法调用,同时重写onRequestPermissionsResult方法,在其中调用onRequestPermissionsResult的onRequestPermissionsResult方法,传回获取权限的结果。

来源:http://blog.csdn.net/qq_36385296/article/details/79173899

标签:android6.0,权限,动态申请,框架,permissiondispatcher
0
投稿

猜你喜欢

  • 仅用5分钟极速入门Dubbo使用教程

    2022-08-08 12:08:55
  • @RequestBody,@RequestParam和@Param的区别说明

    2023-07-20 06:29:03
  • Dagger2 Android依赖注入学习笔记

    2021-11-27 17:15:54
  • Java实现图片验证码功能

    2021-12-07 12:58:55
  • 详解使用Maven开发Web应用详细步骤

    2023-08-06 14:18:20
  • SpringCloud Gateway 路由配置定位原理分析

    2022-06-10 19:57:47
  • springboot整合@Retryable实现重试功能的示例代码

    2023-11-27 11:08:20
  • C#使用Unity实现剪刀石头布游戏

    2023-03-01 06:30:18
  • VScode 打造完美java开发环境最新教程

    2023-02-24 16:02:10
  • C# Winform 调用系统接口操作 INI 配置文件的代码

    2023-03-04 11:49:54
  • 解决SpringBoot中使用@Async注解失效的问题

    2023-08-24 07:38:46
  • Spring Boot+Mybatis+Druid+PageHelper实现多数据源并分页的方法

    2023-09-06 19:53:30
  • Flutter实现切换应用时隐藏应用预览

    2021-07-20 21:05:46
  • Kotlin定义其他类的实现详解

    2022-12-18 09:29:14
  • 浅谈MyBatis 如何执行一条 SQL语句

    2023-10-17 19:36:03
  • Java实现最小生成树算法详解

    2023-11-25 04:51:22
  • 深入理解Java显式锁的相关知识

    2022-06-16 09:59:41
  • Android中AlertDialog 点击按钮后不关闭对话框的功能

    2023-08-04 22:55:50
  • java如何通过IP解析地理位置

    2021-09-11 08:01:07
  • GC调优实战之高分配速率High Allocation Rate

    2021-09-30 22:03:21
  • asp之家 软件编程 m.aspxhome.com