android 权限管理适配 oppo,Android调app权限设置界面(适配各大手机厂商终极版本)...
背景:
众所周知,国内的android是在google之上,各大手机厂商加了一层,诸如MIUI、EUI,之类的系统。因此在我们开发过程中想调出某应用的权限设置页面,调出的是google原生的权限控制界面,但是我们在此页授予应用权限后,实际上应用还是没有权限,只是在google眼里,我已经给你权限了。其实,是被手机厂商系统给拦截了,通俗来讲,中国的手机厂商觉得原生的不好看,或者突出自己系统等原因,会在原生之上加一个壳子,有些东西原生可以决定,有些东西,原生决定了没有用,还是要壳子同意才行。目的:因此我们想跳转的是各大手机厂商系统的应用权限设置界面,这就需要知道类名+包名,而且各大手机厂商的类名+包名肯定不一样,也不保证它们会一成不变。在此https://www.jianshu.com/p/58c6ca8173c4文章的基础上,完善了一个工具类,经过测试:华为:OK小米:OK锤子:OK一加:OKvivo:OK,vivo有自己的提示,再次点击后也是会跳出提示,有瑕疵,但是还可以oppo:OK,自己会提示魅族:暂时跳转没反应酷派:无6.0以上的版本笑哭中兴:OK联想:OKPS:总体来讲,不敢保证肯定能跳过去的,可以采用捕获异常的方式,是在调不到该应用的权限管理页,跳到该应用详情页也可以,反正就是要引导用户在拒绝权限后可以找到在哪授予权限。当然我这里采用的是startActivityForResult,返回时我想知道权限是否已经授予,如果授予了,那么继续干其他的事情,如果没授予,那么继续提示。因为使用startActivityForResult若跳的是应用详情页,用户再次点击权限,其实已经跳出该活动了,再返回,再返回到我们的页面,其实并没有效果,因此考虑区分应用详情页和权限详情页最终确定方案:若打开的是应用详情页,则在onResume中检测权限
核心代码:public static void GoToSetting(Activity activity){
switch (Build.MANUFACTURER){
case MANUFACTURER_HUAWEI://华为
Huawei(activity);
break;
case MANUFACTURER_MEIZU://魅族
Meizu(activity);
break;
case MANUFACTURER_XIAOMI://小米
Xiaomi(activity);
break;
case MANUFACTURER_SONY://索尼
Sony(activity);
break;
case MANUFACTURER_OPPO://oppo
OPPO(activity);
break;
case MANUFACTURER_LG://lg
LG(activity);
break;
case MANUFACTURER_LETV://乐视
Letv(activity);
break;
default://其他
try {//防止应用详情页也找不到,捕获异常后跳转到设置,这里跳转最好是两级,太多用户也会觉得麻烦,还不如不跳
openAppDetailSetting(activity);
// activity.startActivityForResult(getAppDetailSettingIntent(activity), PERMISSION_SETTING_FOR_RESULT);
}catch (Exception e){
SystemConfig(activity);
}
break;
}
}
总体的思路是:尝试跳应用权限页————>失败------->应用详情页。尽量引导嘛
需要的同学可以下载工具类:
点击打开链接
暂时想到的处理判断授权结果的思路就是,应用权限页--->startActivityForResult 应用详情页--->resume中检测
有更好的思路欢迎留言讨论交流
android 权限管理适配 oppo,Android调app权限设置界面(适配各大手机厂商终极版本)...相关推荐
- Android调app权限设置界面(适配各大手机厂商终极版本)
背景: 众所周知,国内的android是在google之上,各大手机厂商加了一层,诸如MIUI.EUI,之类的系统.因此在我们开发过程中想调出某应用的权限设置页面,调出的是google原生的权限控制界 ...
- android 权限管理适配 oppo,Android 动态权限适配 个别厂商( oppo vivo )
遇到一个比较奇葩的问题,特此记录: 动态权限校验 Android 6.0 的 oppo & vivo 手机时,始终返回 权限已被允许 但是当真正用到该权限时,却又弹出权限申请框. Contex ...
- android 跳转权限管理的代码,Android权限管理
Android权限管理 说明 在targetSdkVersion的值为23或者更高,就要进行权限管理,否则如果运行在Android6.0或以上的设备会没有相应权限而导致崩溃 请求权限后,在onRequ ...
- android 电源管理 关闭屏幕,Android之PowerManager电源管理
翻译来源PowerManager 这个类让你拥有控制设备状态的权利. 使用这个api类会很明显地影响设备电量的使用时长.除非你确实需要PowerManager.WakeLock否则不要轻易使用它们,并 ...
- android 布局管理器,【Android开发】布局管理器-表格布局
在XML布局文件中定义表格布局管理器的基本语法: 属性列表 > 需要添加的UI组件 多个TableRow TableLayout支持的XML属性: android:collapseColumns ...
- android 备份管理器,最佳Android备份提取器和备份解决方案
第1部分:如何进行ADB备份 可以使用Android备份提取器轻松备份其数据.如果您的设备安装了Android 4.0及更高版本,则可以轻松执行这些简单的步骤.虽然,它也适用于其他版本,但方法可能会有 ...
- android+学籍管理,论文基于android的学籍管理系统的设计与实现.doc
论文基于android的学籍管理系统的设计与实现 太 原 理 工 大 学 毕业设计(论文)任务书 第1页 毕业设计(论文)题目: 基于安卓的学生管理系统 毕业设计(论文)要求及原始数据(资料): 深入 ...
- android mac 管理工具,Coolmuster Android Assistant for Mac(Android管理工具)
原标题:Coolmuster Android Assistant for Mac(Android管理工具) 想要在mac上管理你的安卓手机数据吗?试试Coolmuster Android Assist ...
- Android上实现一个简单的天气预报APP(六) 更新界面数据
学习参考资源:https://www.gitbook.com/book/zhangqx/mini-weather/details 前面我们已经设置好了基本的界面,获取了网络上的天气数据并解析出来了,接 ...
最新文章
- Nature封面:人类还在看提词器,AI的辩论能力却出现了重大进展
- linux下json数据解析,Linux下使用jq简单解析json的方法
- selenium切换窗口 java_WebDriver(Selenium2) 根据新窗口title切换窗口
- python动态规划详解_python----动态规划
- alias cli3 配置_vue-cli3项目搭建配置以及性能优化
- Java Web解决跨域请求,java初级面试笔试题
- 字节跳动 | 机器学习与推荐算法工程师培养计划
- java 实现屏幕录像_用JAVA捕获屏幕、屏幕录像、播放
- 【BDTC 2016】精准医疗和生物医药大数据论坛:探索医疗与大数据结合之路
- CMake 之 BUILD_SHARED_LIBS 和 CMAKE_BUILD_TYPE 用法教程
- 对话洪小文:微软为什么能够持续保持竞争力和创新力?
- JS,统计图表大全--十一、甘特图
- Maven子模块pom文件灰色下划线
- 基于影像基因的肺结节分割、肺癌分类分期、CT影像预测基因突变 --董云云 论文阅读
- Hack The Box - Starting Point - TIER 0
- 深度学习之NN(Neural Network)
- 【轉】一個在台積電工作3年的工程師寫給學弟學妹們的信
- 计算机应用软件如何运行的,电脑怎么打开应用程序
- 订货管理系统远不只订货,它还有这些作用...
- 【建站】手把手教你搭建惊艳的博客
热门文章
- 基于jquery实现自定义下拉菜单(前端开发)
- Android手机远程控制手机
- 人工智能ai用什么编程语言_用于AI开发的6种最佳编程语言
- 计算机应用程序存储空间不足,电脑提示内存不足该怎么办呢
- ASP.net:关于何种情况下使用DataGrid、DataList或Repeater
- uniapp开发APP从开发到上架全过程(一)
- 「Atcoder」abc238 题解
- vue-element-admin安装依赖报错
- vue尚品汇商城项目-day03【vue插件-19.mockjs模拟数据(开发Home首页当中的ListContainer组件与Floor组件)】
- js解析EXCEL考勤打卡记录