最近项目上比较忙,终于有空闲时间写写东西了。

相信做过Android的都知道,现在的手机系统五花八门,当我们去请求用户的权限的时候,总是会弹出是否允许的对话框。

而且用户一旦不小心点了拒绝,下次就不再询问了,而很多小白用户也不知道怎么去设置。这就导致了很不好的用户体验。

经过研究,我发现像小米,魅族,这些满大街的系统,都是可以通过隐式意图打开权限设置页面的。

这里指的是自身app的权限管理页面

之前已经有人写过类似的文章,不过都比较分散,我这里把这些方法总结了一下。

不多说,直接上代码。

首先是最蛋疼的小米,百度了很多前辈留下的方法,发现都不能打开,没有办法,只能通过 adb dumpsys activity activities 命令去查看

经过一番研究终于打开了。

/**
* 跳转到miui的权限管理页面
*/
private void gotoMiuiPermission() {
Intent i = new Intent("miui.intent.action.APP_PERM_EDITOR");
ComponentName componentName = new ComponentName("com.miui.securitycenter", "com.miui.permcenter.permissions.AppPermissionsEditorActivity");
i.setComponent(componentName);
i.putExtra("extra_pkgname", getPackageName());
try {
startActivity(i);
} catch (Exception e) {
e.printStackTrace();
gotoMeizuPermission();
}
}

接下来上魅族的代码

/**
* 跳转到魅族的权限管理系统
*/
private void gotoMeizuPermission() {
Intent intent = new Intent("com.meizu.safe.security.SHOW_APPSEC");
intent.addCategory(Intent.CATEGORY_DEFAULT);
intent.putExtra("packageName", BuildConfig.APPLICATION_ID);
try {
startActivity(intent);
} catch (Exception e) {
e.printStackTrace();
gotoHuaweiPermission();
}
}

华为的系统由于不太一样,有些系统是华为自己的权限管理,而6.0的是用的原生的权限管理页面,目前手上只有一台6.0的华为手机,

暂时没有研究到打开的方法,如果有知道的大神麻烦告知一下

不过打不开没关系,我们可以退而求其次,打开所用应用的权限管理页面

/**
* 华为的权限管理页面
*/
private void gotoHuaweiPermission() {
try {
Intent intent = new Intent();
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
ComponentName comp = new ComponentName("com.huawei.systemmanager", "com.huawei.permissionmanager.ui.MainActivity");//华为权限管理
intent.setComponent(comp);
startActivity(intent);
} catch (Exception e) {
e.printStackTrace();
startActivity(getAppDetailSettingIntent());
} }

目前也就研究了这三大系统,对于原生系统,和其他系统,如果找不到方法,也可以先把用户引导到系统设置页面

/**
* 获取应用详情页面intent
*
* @return
*/
private Intent getAppDetailSettingIntent() {
Intent localIntent = new Intent();
localIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
if (Build.VERSION.SDK_INT >= ) {
localIntent.setAction("android.settings.APPLICATION_DETAILS_SETTINGS");
localIntent.setData(Uri.fromParts("package", getPackageName(), null));
} else if (Build.VERSION.SDK_INT <= ) {
localIntent.setAction(Intent.ACTION_VIEW);
localIntent.setClassName("com.android.settings", "com.android.settings.InstalledAppDetails");
localIntent.putExtra("com.android.settings.ApplicationPkgName", getPackageName());
}
return localIntent;
}

获取到intent之后直接startactivity就好了。。。

造诣不够,就只知道这么多了,欢迎各位大牛补充!

Android各大手机系统打开权限管理页面的更多相关文章

  1. android-android各大手机系统打开权限管理页面

    android系统五花八门,当我们去请求用户的权限的时候,总是会弹出是否允许的对话框. 而且用户一旦不小心点了拒绝,下次就不再询问了,而很多小白用户也不知道怎么去设置.这就导致了很不好的用户体验. 经 ...

  2. 10.spring-boot基于角色的权限管理页面实现

    10.spring-boot基于角色的权限管理页面实现

  3. Android 监听手机GPS打开状态

    转载请标明出处:http://blog.csdn.net/zhaoyanjun6/article/details/70854942 本文出自[赵彦军的博客] GPS_Presenter package ...

  4. Linux系统用户权限管理

    Linux系统中三种基本权限 用户属主.用户属组及其它人权限 -rw-r--r-- 1 root root 762 11-11 20:34 a.out 文件类型 ls命令中的缩写 应用 一般文件 - ...

  5. Unity获取Android和iOS手机系统电量及网络状况

    最开始考虑使用中间静态链接库来调用手机系统自带的API,但是在研究的过程中发现Android系统将电量等信息记录在了固定的文件中,所以只需要在C#中直接读取就可以而不需要中间库. a.Android版 ...

  6. Android之开启手机系统自带铃声

    /** * 开启手机系统自带铃声 */ private void startAlarm() { mMediaPlayer = MediaPlayer.create(this, getSystemDef ...

  7. Linux系统下权限管理和命令详解

    下面对linux系统下的有关权限操作命令进行了梳理总结,并配合简单实例进行说明.linux中除了常见的读(r).写(w).执行(x)权限以外,还有其他的一些特殊或隐藏权限,熟练掌握这些权限知识的使用, ...

  8. android db 导入 手机 系统 目录 data/data/包名/databases

    韩梦飞沙  韩亚飞  313134555@qq.com  yue31313  han_meng_fei_sha ======== 需要权限, 权限不足. 就算root之后,把这些都改成了777权限,仍 ...

  9. android studio应用获取系统属性权限(SystemProperties)

    dependencies { provided files(getLayoutLibPath()) } /** ZhangChao time:2014-12-31,get layoutlib.jar ...

随机推荐

  1. C#中的new修饰符说明

    new修饰符主要是用来隐藏从基类继承的成员. 这句话怎么理解呢,就是说有一个类,它有一个继承类,继承类中存在和基类中一样名称的成员(属性,方法等). 对继承类中的该成员使用new修饰符时,调用时将会隐 ...

  2. Java Script 学习笔记 -- 基础知识

    Java script 概述 java Script 的简介 JavaScript一种直译式脚本语言,是一种动态类型.弱类型.基于原型的语言,内置支持类型.它的解释器被称为JavaScript引擎,为 ...

  3. 【Sping管理bean的原理】

    spring容器默认情况下,当服务启动时,解析配置文件,实例化文件中的所有类. 我们直接使用spring时,获取spring注入的bean是这样的, ApplicationContext ctx =  ...

  4. SqlDataReader

    using (mycon) { //using语句与try catch finally结合使用 mycon.Open(); // MessageBox.Show("dakai"); ...

  5. InnoDB信息说明

    InnoDB是MySQL数据库发展至今一款至关重要的数据库存储引擎,其不仅支持事务特性,并且具有丰富的统计信息,便于数据库管理人员了解最近InnoDB存储引擎的运行状态. 早期版本的InnoDB存储引 ...

  6. 「CF744C」Hongcow Buys a Deck of Cards「状压 DP」

    题意 你有\(n\)个物品,物品和硬币有\(A\),\(B\)两种类型,假设你有\(M\)个\(A\)物品和\(N\)个\(B\)物品 每一轮你可以选择获得\(A, B\)硬币各\(1\)个,或者(硬 ...

  7. HDU1729 Stone Game

    题目:http://acm.hdu.edu.cn/showproblem.php?pid=1729 思路:理解错题目了,以为SG模板直接套就行了.后来队友说了那个ci是不断变化的.那么每次可以放的石头 ...

  8. ch8 -- useLK

    useLK 光流法跟踪FAST角点 执行    ./useLK ../../data 运行程序. 光流法需要include<opencv2/video/tracking.hpp>,用到列表 ...

  9. Java start和run启动线程的区别

    我们知道,我们通过调用线程的start方法启动一个线程,那么,我们可以直接调用run方法来启动一个线程吗? 先看下面一段代码: public class Test { public static vo ...

  10. Eclipse(2019-03版本)汉化

    1.Eclipse IDE 版本 eclipse-jee-2019-03-R-win32-x86_64.zip 2.Eclipse 汉化包下载 babel-R0.16.0-photon.zip 3.解 ...