软件编程
位置:首页>> 软件编程>> Android编程>> android6.0权限动态申请框架permissiondispatcher的方法

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

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

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

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

0
投稿

猜你喜欢

手机版 软件编程 asp之家 www.aspxhome.com