关闭 Android 6.0及更高版本Android Runtime Permission(二)
来源:互联网 发布:动易软件招聘 编辑:程序博客网 时间:2024/05/13 12:14
处理 “Never Ask Again”
如果一个用户拒绝了一个权限请求,则在应用第二次进行权限请求的时候,用户将会得到”Never ask again”的选项,一边阻止应用程序再次对此权限的请求。
如果这个选项在电价DENY之前被选中,下次,我们再次调用requestPermissions方法的时候,这个对话框并不会出现,取而代之的是什么都不执行。
但是,如果在UI的交互过程中,程序并没有任何反馈时,这是非常不合理的。我们需要通过Activity的shouldShowRequestPermissionRationale方法来显示为什么需要相应的权限。
Android允许我们通过设置合理的请求来处理用户选择”Never Ask Again”选项
修改后的核心代码如下:
private void insertDummyContactWrapper() { // 判断是否已经拥有AndroidManifest.xml中声明的权限 // 如果有的话则直接执行insertDummyContact int hasWriteContactsPermission = checkSelfPermission(Manifest.permission.WRITE_CONTACTS); if (hasWriteContactsPermission != PackageManager.PERMISSION_GRANTED) { *if(!shouldShowRequestPermissionRationale(Manifest.permission.WRITE_CONTACTS)) { showMessageOKCancel("You need to allow access to Contacts", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { requestPermissions(new String[] {Manifest.permission.WRITE_CONTACTS}, REQUEST_CODE_ASK_PERMISSIONS); } }); return ; }* // 如果没有权限,则通过requestPermissions来调用权限请求对话框 requestPermissions(new String[] {Manifest.permission.WRITE_CONTACTS}, REQUEST_CODE_ASK_PERMISSIONS); return; } insertDummyContact(); } *private void showMessageOKCancel(String message, DialogInterface.OnClickListener okListener) { new AlertDialog.Builder(MainActivity.this) .setMessage(message) .setPositiveButton("OK", okListener) .setNegativeButton("Cancel", null) .create() .show(); }*
合理的请求对话框将显示当这个权限第一次请求,即便用户选择了 “Never Ask Again” 也正常显示合理的请求对话框
0 0
- 关闭 Android 6.0及更高版本Android Runtime Permission(二)
- Android 6.0及更高版本Android Runtime Permission(一)
- Android 6.0 Runtime Permission 机制
- Android M Runtime Permission
- Android Runtime Permission
- Android runtime permission
- 浅谈Android 6.0之Runtime Permission
- Android 6.0RunTime Permission完美解决方案
- Android 6.0新特性之Runtime Permission
- Android 6.0RunTime Permission完美解决方案
- Android M Runtime Permission 介绍
- Android M Runtime Permission 介绍
- Android M Runtime Permission 介绍
- android运行时权限(Android Runtime Permission )
- Android动态权限管理:Android Runtime Permission.
- Android 6.0动态权限 Runtime Permission API使用
- Android RunTime Permission 运行时权限
- Android M权限管理机制:Runtime Permission简介
- Codeforces 534 C. Polycarpus' Dice【思维】
- apache:浅谈win7系统下安装apache2.2出错的解决方案
- Sturts2中action向jsp页面传值
- Android Fragment 真正的完全解析(下)
- 持续集成之项目代码托管
- 关闭 Android 6.0及更高版本Android Runtime Permission(二)
- HDU 5878 I Count Two Three(打表加二分)
- OpenCV问题集锦,图片显示不出来,WaitKey(0),imread()不能读图片,未经处理的异常,等问题集合
- 第四周 项目3-单链表的应用(2)
- AngularJS----Post
- 网教23. 暗算 2.0
- CSS HACK
- Log图文详解(Log.v,Log.d,Log.i,Log.w,Log.e)!
- 使用Pattern、Matcher来实现搜索高亮显示