Android6.0运行时权限处理(项目中使用到的一种形式,没有使用第三方库)
2016-10-25 09:53
344 查看
相信大家都知道Android6.0之后的权限申请跟之前的版本有一个很大的差别,那就是任何危险权限都必须经过用户的手动选择是否接受来做相应的操作,而Android6.0之前安装应用的过程中是默认选中的。也就是说你要安装这个应用那就必须默认许可这些权限。所以在项目中遇到使用权限的时候要注意一下区分版本。6.0以下可以直接使用,6.0以上需要代码来实现权限申请Dailog的弹出。
下面以访问Storage权限为例来详细解释一下Android6.0的运行时权限:
需求:点击一个按钮实现在sd卡创建一个文件的功能
首先AndroidManifest中必须要已经写入了权限这个是必须的
然后我们进行Android系统版本的检查,如果大于Android6.0则执行申请权限操作,否则直接创建文件代码如下
当满足 去申请权限的条件时系统会弹出请求权限的Dialog提示,然后用户可以选择是否接受权限请求,当用户点击接受或者不接受都会产生一个回调
然后我们重写此方法,通过requestCode来判断是哪一个权限申请的回调,然后我们执行了doNext方法(doNext只是我们自己写的一个方法名字而已)然后doNext代码如下
通过以上代码可以看出,if条件中也就是说用户选择了接受权限,然后我们执行了创建文件的方法。else也就是用户拒绝了不用做任何操作,如果用户要使用这个功能就必须接受这个权限所以下次点击会继续弹出权限选择框
下面以访问Storage权限为例来详细解释一下Android6.0的运行时权限:
需求:点击一个按钮实现在sd卡创建一个文件的功能
首先AndroidManifest中必须要已经写入了权限这个是必须的
然后我们进行Android系统版本的检查,如果大于Android6.0则执行申请权限操作,否则直接创建文件代码如下
当满足 去申请权限的条件时系统会弹出请求权限的Dialog提示,然后用户可以选择是否接受权限请求,当用户点击接受或者不接受都会产生一个回调
@Override public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) { super.onRequestPermissionsResult(requestCode, permissions, grantResults); doNext(requestCode,grantResults); }
然后我们重写此方法,通过requestCode来判断是哪一个权限申请的回调,然后我们执行了doNext方法(doNext只是我们自己写的一个方法名字而已)然后doNext代码如下
通过以上代码可以看出,if条件中也就是说用户选择了接受权限,然后我们执行了创建文件的方法。else也就是用户拒绝了不用做任何操作,如果用户要使用这个功能就必须接受这个权限所以下次点击会继续弹出权限选择框
相关文章推荐
- 处理【试图运行项目时出错:无法启动调试,没有正确安装调试器。请运行安装程序安装或修复调试器。】
- iOS6和iPhone5使用第三方静态库在真机无法运行的处理armv7s
- winXP(同时也适用于win7)系统使用打印机时“后台处理程序服务没有运行”时的解决办法
- visual studio设置为使用IIS运行网站时加载项目遇到权限问题的解决方法
- 试图运行项目时出错: 无法在 Web 服务器上启动调试。您没有调试该服务器的权限。
- “在使用Samba进行建立Wisamba无法访问,你可能没有权限使用网络”的一种问题原因及解决
- 试图运行项目时出错: 无法在 Web 服务器上启动调试。您没有调试该服务器的权限。
- VMware无法运行,重新安装提示“您可能没有合适的权限访问这个项目”的解决办法
- Ubuntu下使用adb及没有权限问题的处理
- visual studio设置为使用IIS运行网站时加载项目遇到权限问题的解决方法
- 【分享】使用第三方上传插件的引起的页面权限处理
- System.UnauthorizedAccessException: 拒绝访问 temp 目录。用来运行 XmlSerializer 的标识“NT AUTHORITY\NETWORK SERVICE”没有访问 temp 目录的足够权限。CodeDom 将使用进程正在使用的用户帐户进行编译,这样,如
- 学会了处理项目中那些没有确定方案的东西(使用“策略模式”)
- 运行cmd时提示你可能没有适当的权限访问该项目
- 试图运行项目时出错: 无法在 Web 服务器上启动调试。您没有调试该服务器的权限。
- iOS6和iPhone5使用第三方静态库在真机无法运行的处理
- iOS6和iPhone5使用第三方静态库在真机无法运行的处理
- iOS6和iPhone5使用第三方静态库在真机无法运行的处理
- iOS6和iPhone5使用第三方静态库在真机无法运行的处理
- 试图运行项目时出错: 无法在 Web 服务器上启动调试。您没有调试该服务器的权限。