android进阶:手写权限请求
来源:互联网 发布:淘宝店铺被处置 编辑:程序博客网 时间:2024/06/05 03:02
废话不多说现在开车!
现在需要请求相机、通讯录、定位、外部储存权限。
既然请求权限就先了解自行了解:
///请求权限的
requestPermissions(@NonNull String[] permissions, int requestCode);
///判断是否拒绝过
shouldShowRequestPermissionRationale(@NonNull Activity activity,
@NonNull String permission)
1、正常的权限请求:
不断允许,刷~完成。
2、如果第一个点击禁止其余允许,那么下次就会出来这个:
3、这个时候如果继续点击禁止,下次也是同样出现这个这个时候需要提示应用为什么需要这些权限。
4、如果点击不在提示并且拒绝,那么这个窗口将不在出现,这个时候就要判断是否有权限,然后提示在应用管理的设置手动添加权限了
5、步骤都了解了,剩下就是踩坑(机型适配),首先小米是大坑,具体:
http://blog.csdn.net/qq_34881609/article/details/55100965
还有一个问题是启动了setting的页面,当在上面修改权限的时候,activity是会被杀掉的,自己猜想,估计是权限变更了,要把原来的旧权限的activity销毁,这样不产生冲突。网上也说在fragment启动,fragment也是会被杀的,所以我这个权限请求的启动一个无界面activity请求,杀也就是杀它,不影响原来的。
除此之外还遇到一些问题,就是有时候在setting进行设置的时候原来的app会整个被杀,我也无语(偶然性)我也不知道,代码也觉得没问题(自判断系统是自己杀的…),然后就导致onActivityResult不能回调,不过影响不大,再点击请求权限多一次咯。
6、撸了一天多,参考其他开源的也写了一个像样的东西出来,自认为是没有内存泄漏的,有得话,丢砖头给我吧,马上改!代码基本都有注释无warning
下面是使用示例: github:https://github.com/DMings/TestPermission
DMPermission.with(MainActivity.this) .setNeedPermissionMsg("应用需要相机、通讯录、定位、外部储存才能正常工作") .setDeniedPermissionMsg("需要到应用管理确保设置了相机、通讯录、定位、外部储存权限") .setPermissionAndRequest( Manifest.permission.WRITE_CONTACTS, Manifest.permission.CAMERA, Manifest.permission.ACCESS_COARSE_LOCATION, Manifest.permission.WRITE_EXTERNAL_STORAGE ).setListener(new DMPermission.OnListener() { @Override public void onFail() { Toast.makeText(MainActivity.this,"获取权限失败!",Toast.LENGTH_SHORT).show(); } @Override public void onSuccess() { Toast.makeText(MainActivity.this,"获取权限成功!",Toast.LENGTH_SHORT).show(); }});
- android进阶:手写权限请求
- Android进阶系列-手写数据库框架
- Android请求root权限
- Android M权限请求
- android 6.0权限请求
- Android多权限请求
- android权限请求
- android多权限请求
- Xamarin Android权限请求
- Android权限请求
- Android多权限请求
- Android进阶系列-手写高并发网络访问框架
- Android权限学习之请求权限实例
- android 应用请求root权限
- android.permission权限请求汇总
- Android (6.0) M 请求权限
- Android M之权限请求
- Android 运行时请求权限
- 百度地图获取sha1值
- mysql安装配置以及在django中的配置(windows版,以mysql5.6为例)
- Android中如何判断service是否启动并停止
- Android Cordova创建人生第一个APP
- MyBatis xml文件中的大于、小于等符号写法
- android进阶:手写权限请求
- 开始在csdn上记录些东西
- poj 2728 Desert King (最优比率生成树/01分数规划)
- 微信小程序项目开发实践
- ES6-Generator函数和async函数
- js原生学习-初级-练习8
- SQL计算两个日期之间的工作天数(除过周六日的天数)
- Java多线程编程 学习
- #bzoj-Balic2001#棋盘上的骑士(Hungary)