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中添加
applyplugin:'android-apt' 。。。。。。。 dependencies{ 。。。。 compile'com.github.hotchemi:permissionsdispatcher:2.3.1' apt'com.github.hotchemi:permissionsdispatcher-processor:2.3.1' }
2,添加注解
packagecom.shilian.yibo; import.... /** *主页面 */ @RuntimePermissions publicclassMainActivityextendsBaseActivityimplementsCompoundButton.OnCheckedChangeListener,View.OnClickListener{ @Override protectedvoidonCreate(BundlesavedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ButterKnife.bind(this); ..... } @OnClick(R.id.textView_scan_code_home) publicvoidonClick(Viewview){ switch(view.getId()){ caseR.id.textView_scan_code_home: MainActivityPermissionsDispatcher.startScanWithCheck(this); break; } } @NeedsPermission(android.Manifest.permission.CAMERA) voidstartScan(){ startActivityForResult(newIntent(this,CaptureActivity.class),1); } /** *OnShowRationale注解获取权限时给出提示的方法 **/ @OnShowRationale(android.Manifest.permission.CAMERA) voidshowRationaleForCamera(finalPermissionRequestrequest){ newAlertDialog.Builder(this).setPositiveButton("知道了",newDialogInterface.OnClickListener(){ @Override publicvoidonClick(DialogInterfacedialog,intwhich){ request.proceed(); } }).setMessage("扫码需要获取相机权限").setCancelable(true).show(); } /** *OnPermissionDenied注解拒绝授权时回调的方法 **/ @OnPermissionDenied(android.Manifest.permission.CAMERA) voidonCameraDenied(){ toast("相机权限未开启"); } /** *OnNeverAskAgain注解当用户选择拒绝且不再询问时的回调方法 **/ @OnNeverAskAgain(android.Manifest.permission.CAMERA) voidonCameraNeverAskAgain(){ toast("相机权限未开启"); } @Override publicvoidonRequestPermissionsResult(intrequestCode,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方法,传回获取权限的结果。
以上这篇android6.0权限动态申请框架permissiondispatcher的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持毛票票。