转载请标明出处,维权必究:https://www.cnblogs.com/tangZH/p/10338377.html

更多资料:http://77blogs.com/?p=463

有时候APP需要获取某些权限,要让用户手动打开,那么问题来了,若是直接提醒用户出去找权限入口,然后自己打开,用户不一定找得到,因为现在的Android厂家定制的room五花八门,那么用户觉得不耐烦就有可能流失这部分用户。

所以,我们需要给用户一个入口,让用户直接在APP里面跳转到对应的权限页面。但刚刚也说了,现在的Android厂家定制的room五花八门,所以不同的机型或者android版本打开权限页面的方法就可能不一样了,我们得去适配。

网上查了很多资料,什么中级终极重级的方案都有,虽然这确实能够解决一些机型的适配,但还是没能给出一个通用的解决方法。

比如有人说:

跳转华为的权限界面该这样:

private void goHuaWeiMainager() {
try {
Intent intent = new Intent(packageName);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
ComponentName comp = new ComponentName("com.huawei.systemmanager", "com.huawei.permissionmanager.ui.MainActivity");
intent.setComponent(comp);
mContext.startActivity(intent);
} catch (Exception e) {
Toast.makeText(mContext, "跳转失败", Toast.LENGTH_LONG).show();
e.printStackTrace();
goIntentSetting();
}
}

若是失败就直接打开默认界面:

 private void goIntentSetting() {
Intent intent = new Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS);
Uri uri = Uri.fromParts("package", mContext.getPackageName(), null);
intent.setData(uri);
try {
mContext.startActivity(intent);
} catch (Exception e) {
e.printStackTrace();
}
}

从上面可以看出其主要的方法在与:

ComponentName comp = new ComponentName("com.huawei.systemmanager", "com.huawei.permissionmanager.ui.MainActivity");

里边的参数前一个是华为权限界面的包名,华为权限界面的类名,既然知道包名与类名自然可以打开该Activity。

其他机型也是用这样的思想去解决,那么问题就出现了,看了网上这么多适配的方案,都是这样的思想啊,写来写去都差不多,那他们怎么就知道这些机型的权限界面的包名与类名呢?他们从来都没说,或许是我没看到,尴尬。

好了,所有的方法最终归回到终极方案,下面便是最终方法:

找到该机型,然后找打你想要的权限界面,可能比较难找,不过你还是要找到它,然后打开,接着通过adb命令查看当前页面的Activity,就可以看到该权限界面的包名与类名。

具体方法看链接:

https://www.cnblogs.com/tangZH/p/10139371.html

当然,你想要适配什么机型什么android系统版本,就需要找到这样一台手机去执行这样的操作,拿到权限界面的包名与类名后就可以用上述类似的方法,在app里边直接打开权限界面,没办法,好好适配吧,少年。

Android 跳转权限设置界面的终极方案的更多相关文章

  1. iOSapp内跳转到设置界面

    从app内跳转到设置界面的代码如下: NSURL *url = [NSURL URLWithString:UIApplicationOpenSettingsURLString]; if ([[UIAp ...

  2. android判断当前网络状态及跳转到设置界面

    今天,想做这个跳转到网络设置界面, 刚开始用 intent = new Intent(Settings.ACTION_WIRELESS_SETTINGS); 不料老是出现settings.Wirele ...

  3. android中 检查网络连接状态的变化,无网络时跳转到设置界面

    1:在AndroidManifest.xml中加一个声明 <receiver android:name="NetCheckReceiver">    <inten ...

  4. android检查网络连接状态的变化,无网络时跳转到设置界面

    在AndroidManifest.xml中加一个声明<receiver android:name="NetCheckReceiver"> <intent-filt ...

  5. iOS 权限判断 跳转对应设置界面

    相机权限 1.1 使用说明 在合适的地方导入#import <AVFoundation/AVFoundation.h> 使用AVAuthorizationStatus类获取当前权限状态 在 ...

  6. Android跳转各种系统设置界面-总结

    来自:http://www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/2017/0921/8536.html View btn1 = this.findVi ...

  7. android 6.0 权限设置详解

    从Android 6.0版本开始,在安装应用时,该应用无法取得任何权限. 相反,在使用应用的过程中,若某个功能需要获取某个权限,系统会弹出一个对话框,显式地由用户决定是否将该权限赋予应用. 只有得到了 ...

  8. Android开发常用权限设置

    加在AndroidManifest.xml 文件中manifest标签以内,application以外 例如:<!--网络权限 --> <uses-permission androi ...

  9. Android 手机卫士--实现设置界面的一个条目布局结构

    本文地址:http://www.cnblogs.com/wuyudong/p/5908986.html,转载请注明源地址. 本文以及后续文章,将一步步完善功能列表: 要点击九宫格中的条目,需要注册点击 ...

随机推荐

  1. link/Extended dependency 无法显示连接

    把矩形控件先去掉,然后就能看到表与表之间的 link/Extended dependency 连线了.

  2. java数据结构和算法02(栈)

    什么叫做栈(Stack)呢?这里的栈和jvm的java栈可不是一个东西... 栈作为一种数据结构,我感觉栈就类似一种接口,实现的话有很多种,比如用数组.集合.链表都可以实现栈的功能,栈最大的特点就是先 ...

  3. python爬虫踩坑教程

    我们的目标是爬取下面这个个网址上的2010~2018年的数据 http://stockdata.stock.hexun.com/zrbg/Plate.aspx?date=2015-12-31 获取我们 ...

  4. 《k8s-1.13版本源码分析》-抢占调度

    源码分析系列文章已经开源到github,地址如下: github:https://github.com/farmer-hutao/k8s-source-code-analysis gitbook:ht ...

  5. 1.JAVA-Hello World

    1.Java开发介绍 J2SE:Java 2 Platform Standard Edition(2005年之后更名为JAVA SE). 包含构成Java语言核心的类.比如:数据库连接.接口定义.数据 ...

  6. Bootstarp的安装以及简单的使用方法(pycharm中)

    一.安装 首先打开Bootstarp的官网:https://v3.bootcss.com 下载完成后,解压压缩包,把解压后的文件导入pycham中 在HTML页面中的style中导入bootstrap ...

  7. 对 MES 感兴趣?赶紧看过来!

    在知乎许久都没有智能制造话题,索性自己在 2018-06-08 创建了智能制造话题,在创建话题过程中也遇到些麻烦,最终联系了知乎小管家,成功创建了该话题.目前过去7个月了,该话题的关注人数有820人了 ...

  8. ReactNative之从“拉皮条”来看RN中的Spring动画

    上篇博客我们聊了RN中关于Timing的动画,详情请参见于<ReactNative之结合具体示例来看RN中的的Timing动画>本篇博客我们将从一个“拉皮条”的一个动画说起,然后来看一下R ...

  9. jquery操作iframe的方法:父页面和子页面相互操作的方法

    今天在弄jquery操作iframe中元素:先由iframe中的子页面b.html给外面的父页面a.html页面传值,再将a.html页面计算机的值放到b.html页面上,这里就用到子页面和父页面相互 ...

  10. 使用dom4j 解析xml文件

    //使用dom4j 解析xml文件,升级版,dom4j是对dom的封装 //重点 package com.offcn.utils; import java.io.File; import java.i ...