android权限申请方法,安卓开发Android6+权限申请管理用户拒绝权限一键解决方案...
问题:
android 开发中,权限是一个重要的环节,不可避免的环节。尤其是刚入行的小白们,认为在配 AndroidManifest 中加入权限表就万事大吉。 没想自己测试时还是正常,打包发布别人安装后总会出现各种BUG 或闪退。通过调试也找不到问题所在。 没想到的是,权限没有拿到导至调用系统功能失败,引法闪退或其他的问题。 在刚好在项目开发中就遇到这个问题,拿各种手机上试,有手机闪退,通过调试后发现了这个问题。相信在你们开发同样会遇到这个问题, 这个问题来自 android 系统升级到 android 6 以后的版本手机,都会有这样的问题。
分析:
通过分析, 在手机安装时,1一些厂商系统默认禁用权限导致用户权限被禁用,2用户习惯性安装应用主动禁用权限,3用户安装时无意点击禁用权限功能。 在用户主动禁用权限后,发起请求权限时不能弹出请求界面,权限不法使用。
解决方法:
检验自身权限是否被禁用请求用户开启权限引导用户到系统设置界面打开权限用到系统函数 ActivityCompat.checkSelfPermission ActivityCompat.shouldShowRequestPermissionRationale ActivityCompat.requestPermissions
分别是根权是否开启用户是否主动禁用 请求用户分配权限
解决流程:
解决流程
有了解方案,就可以进行代码编写
一个个权限编写申请,那就太麻烦了,我想不是我们搞技术的所要的,我们要的就是快速,没有 “一劳永逸”的方法,答案是有的。通过两行代码就能解决问题,这样是为是简单多了呢?
PermissionUtil.checkPermission(this,null); PermissionUtil.onRequestPermissionsResult(this,requestCode,permissions,grantResults);
示例代码 :
/**
* 启动ACtivity 权限申请
*/
public class SplashActivity extends AppCompatActivity {
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState); // setContentView(R.layout.activity_splash); //第一步 //测试权限并请求权限
PermissionUtil.checkPermission(this,null);
}
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
//第二步
//申请权限结果用户禁用引到系统设置
PermissionUtil.onRequestPermissionsResult(this,requestCode,permissions,grantResults);
}
}
把所有核心代码封装代码写到 PermissionUtil 类中完成,保持使用主代码简洁。
展示最核代码,相信以你的智慧其他的简单代码也难不到你了吧!
核心代码
通过AndroidManifest.xml 中配置的权限,一一效验,不需要手动一个个写成代码进行验证那么麻烦。 如果没有权限就调用申请权限,如果有用户主动拒绝权限,直接跳到设置界面。
我们来看看我们的开发的项目测试效果
运行应用权限是被禁用状态
启动时弹出申请题示
跳转到设置界面
当权限都通过,就不会弹出提示
如有需要原代码请移步到
或有任何疑问请给我留言
举报/反馈
android权限申请方法,安卓开发Android6+权限申请管理用户拒绝权限一键解决方案...相关推荐
- linux的用户及权限管理,用户及权限管理
一.Linux用户.组的概念 1.用户 管理员:root,0 其他用户:1-65535 系统用户:1-499,守护进程获取资源进行权限分配 普通用户:500+,交互式登陆 2.组 管理员组:root, ...
- 基于EasyNVR二次开发实现业务需求:用户、权限、设备管理
许多接触到EasyNVR的用户.开发者都会提出关于EasyNVR设备分组和账户设备关系映射的问题,我们参考目前大部分的视频能力输出平台的做法,EasyNVR目前只做了唯一的用户/密码(类比appkey ...
- android关键应用程序,安卓开发:Android应用程序的四个关键点
核心提示:本教程为大家介绍在安卓开发中我们应该关注那几点. 对于一个Android应用程序来说,是由四种关键构造块组织而成的,这四种构造块分别是:Activity.Intent Receiver.Se ...
- android自定义模态框,安卓开发自定义弹出框的简单方式(纯代码布局)
弹出框在安卓开发中是经常会用到的,如果单纯的只是用安卓自带的对话框模式肯定是十分单调的. 再来我看来安卓一定有一个功能让我们像Layout添加Layout一样把Layout添加到提示框里面. 所以忘了 ...
- SNF快速开发平台2019-权限管理模型简介-权限都在这里
1.1 权限的概念 权限是指为了保证职责的有效履行,任职者必须具备的,对某事项进行决策的范围和程度.它常常用"具有批准--事项的权限"来进行表达.例如,具有批准预算外5000 ...
- android 微博字体高亮,安卓开发札记——高仿新浪微博文字处理(实现关键字高亮,自定义表情替换并加入点击事件实现)...
安卓开发笔记--高仿新浪微博文字处理(实现关键字高亮,自定义表情替换并加入点击事件实现) 先让大家看下效果图,这个是我自己在闲暇时间仿写的新浪微博客户端: 今天来讲讲如何实现上图的效果,这里需要用到S ...
- android+root+新方法,安卓手机最新Root通用教程
直接运行superSu Root失败 直接运行superSu等Root工具在很多手机上都会Root失败,关键在于没有相关权限,那么怎么才能在这些手机上获取Root权限呢? 开发者选项 首先打开开发者选 ...
- git通过authorized_keys来管理用户的权限(二)
首先git服务器的搭建参见:http://blog.csdn.net/lyhdream/article/details/49561645 在上一篇文章我们介绍了,通过创建用户来为开发者提供一个可以使用 ...
- Android大作业:安卓开发图书管理系统APP
Android Studio开发项目图书管理系统项目视频展示: 点击进入图书管理系统项目视频 引 言 现在是一个信息高度发达的时代,伴随着科技的进步,文化的汲取,人们对于图书信息的了解与掌握也达到了一 ...
最新文章
- 利用标准库sprintf、sscanf函数实现字符串和数字的转换
- js/jQuery判断浏览器名称、内核版本、浏览器壳
- 第20条:为私有方法名加前缀
- python解析并读取PDF文件:函数总结
- cocos2d-x for android配置 运行 Sample on Linux OS
- 前端学习(2958):组件之间的参数传递子传父
- Redis使用过程出现类型转换异常问题- 20190220
- 三维坐标系带偏航角俯仰角_浅谈三维旋转的三种方法及差异
- 值得收藏的数据库基础总结!
- django框架基础
- mysql skip-opt_FAQ系列 | mysqldump选项之skip-opt-阿里云开发者社区
- 2185. 统计包含给定前缀的字符串
- 使用php建立评论系统
- python解释器错误
- linux里的tree 命令,Linux中tree命令起什么作用呢?
- Foobar音乐播放器——最佳音乐播放器 - imsoft.cnblogs
- 【小白学前端】化腐朽为神奇-Bootstrap实现表单美化(day02-6)
- jw player 6 断点续播 seek()
- 福田区有哪些公园好玩 你都去过吗
- shell脚本中的空格
热门文章
- chrome 使用gpu 加速_DLI每周一课|用CUDA C的GPU加速库加速应用程序(新人有礼)
- mnist手写数字识别python_Python tensorflow实现mnist手写数字识别示例【非卷积与卷积实现】...
- jmap 定时生成linux,linux – 创建heapdumps的替代方案,性能比jmap更高?
- php下列列表如何赋值,php学习笔记之list()赋值问题及each()结合遍历
- java bytebuffer 读写_java nio bytebuffer文件读写问题
- 异常和中断处理流程: Exception- or Interrupt-Handler Procedures
- SeismicUnix:wtlib.c[小波变换库]
- OpenGL学习笔记:模型变换、视图变换、投影变换 、视口变换、操作矩阵堆栈
- GitHub#python#:ppt(批量)转换为pdf
- Django:模型层ORM