PermissionsDispatcher
来源:互联网 发布:西门子软件质量规范 编辑:程序博客网 时间:2024/05/17 21:43
1. 封装的意义
- 每次在需要判断权限的地方均写如上面所示的一套方法,很麻烦。
- 封装后只需要改变传进来的我们需要判断的权限即可。
2. 使用方法
2.1 步骤01
@RuntimePermissionspublic class MainActivity extends AppCompatActivity { private Button mButton; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mButton = (Button) findViewByaId(R.id.bt_button); mButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { } }); } @NeedsPermission(Manifest.permission.CALL_PHONE) //在获取权限的地方注释 void call() { Intent intent = new Intent(Intent.ACTION_CALL); Uri data = Uri.parse("tel:" + "10086"); intent.setData(data); try { startActivity(intent); } catch (SecurityException e) { e.printStackTrace(); } } @OnShowRationale(Manifest.permission.CALL_PHONE) //提示用户为何要开启此权限 void showWhy(final PermissionRequest request) { new AlertDialog.Builder(this) .setMessage("拨打电话需要您的同意") .setPositiveButton("知道了", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { request.proceed();//再次执行权限请求 } }).show(); } @OnPermissionDenied(Manifest.permission.CALL_PHONE) //用户选择拒绝时的提示 void showDenied() { Toast.makeText(this, "您拒绝了拨打电话的操作", Toast.LENGTH_SHORT).show(); } @OnNeverAskAgain(Manifest.permission.CALL_PHONE) //用户选择不再询问后的提示 void showNotAsk() { new AlertDialog.Builder(MainActivity.this).setMessage("该功能需要访问电话的权限,不开启将无法正常工作!") .setPositiveButton("去开启", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { Intent intent = new Intent(Settings.ACTION_ACCESSIBILITY_SETTINGS); startActivity(intent); } }) .setNegativeButton("保持禁止", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { } }) .create() .show(); }}
2.2 步骤02
- Build-Make Moudle ‘app’
- 伴随着会生成MainActivityPermissionsDispatcher类
- 重写onRequestPermissionsResult方法
- 代码如下:
@Override public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { super.onRequestPermissionsResult(requestCode, permissions, grantResults); // NOTE: delegate the permission handling to generated method MainActivityPermissionsDispatcher.onRequestPermissionsResult(this, requestCode, grantResults); }
mButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { MainActivityPermissionsDispatcher.callWithPermissionCheck(MainActivity.this); } }); }
3. Demo地址
https://github.com/OnlyYouMyLove/MyPermissionsDispatcher
阅读全文
0 0
- PermissionsDispatcher
- PermissionsDispatcher 使用说明
- PermissionsDispatcher使用详解
- PermissionsDispatcher使用详解
- PermissionsDispatcher的使用方法
- PermissionsDispatcher的使用
- PermissionsDispatcher的使用
- Android6.0权限管理-PermissionsDispatcher
- Android6.0权限管理-PermissionsDispatcher
- 权限相关和第三方库PermissionsDispatcher
- PermissionsDispatcher(Android权限管理框架)
- 使用PermissionsDispatcher轻松解决Android权限问题
- Android6.0权限第三方库:PermissionsDispatcher
- Android 运行时权限获取-PermissionsDispatcher
- 初次使用PermissionsDispatcher碰到的问题
- 利用PermissionsDispatcher解决运行时权限异常
- PermissionsDispatcher动态权限管理使用详解
- android开发 权限适配6.0 permissionsdispatcher的安装使用
- Pascal程序笔迹:快速幂
- @SerializedName
- 卷土重来:谷歌推出Datally新应用,适应中国消费市场
- 常用排序算法之直接插入排序
- easyui--4.tree
- PermissionsDispatcher
- 我(程序员?)
- ubuntu17.04中锐捷客户端登录问题
- 541. Reverse String II
- java之IO流-字节流
- EventBus3.0的简单实用
- 携程反爬中的Eleven参数-反爬与反反爬的奇技淫巧
- JavaScript表单验证
- UML四大关系篇