2023-04-27 Android APP 不同机型跳转应用权限设置页面,我这里在小米(android12)和三星(android8)上测试

一、代码

package com.xxx.bluetooth_ble.permission;import android.content.ActivityNotFoundException;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.content.pm.ResolveInfo;
import android.net.Uri;
import android.os.Build;
import android.provider.Settings;
import android.util.Log;import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.List;public class JumpPermissionManagement {private Context mContext;private String TAG = "JumpPermissionManagement";//自己的项目包名private String packageName = "your-packageName(自己去清单文件看一下)";public JumpPermissionManagement(Context context) {this.mContext = context;}public void jumpPermissionPage() {try {String name = Build.MANUFACTURER;switch (name) {case "HUAWEI":goHuaWeiManager();break;case "vivo":goVivoManager();break;case "OPPO":goOppoManager();break;case "Coolpad":goCoolpadManager();break;case "Meizu":goMeiZuManager();break;case "Xiaomi":goXiaoMiMainager();break;case "samsung":goSangXinManager();break;case "Sony":goSonyManager();break;case "LG":goLGManager();break;default:goIntentSetting();break;}} catch (Exception e) {goIntentSetting();}}private void goLGManager() {try {Intent intent = new Intent(packageName);ComponentName comp = new ComponentName("com.android.settings", "com.android.settings.Settings$AccessLockSummaryActivity");intent.setComponent(comp);mContext.startActivity(intent);} catch (Exception e) {goIntentSetting();}}private void goSonyManager() {try {Intent intent = new Intent(packageName);ComponentName comp = new ComponentName("com.sonymobile.cta", "com.sonymobile.cta.SomcCTAMainActivity");intent.setComponent(comp);mContext.startActivity(intent);} catch (Exception e) {goIntentSetting();}}private void goHuaWeiManager() {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) {goIntentSetting();}}private static String getMiuiVersion() {String propName = "ro.miui.ui.version.name";String line = null;BufferedReader input = null;try {Process p = Runtime.getRuntime().exec("getprop " + propName);input = new BufferedReader(new InputStreamReader(p.getInputStream()), 1024);line = input.readLine();} catch (Exception ex) {//Timber.e(ex);} finally {if (input != null) {try {input.close();} catch (IOException e) {//Timber.e(e);}}}return line;}private void goXiaoMiMainager() {String rom = getMiuiVersion();Log.d(TAG,"getMiuiVersion:"+rom);Intent intent = new Intent();if ("V6".equals(rom) || "V7".equals(rom)) {intent.setAction("miui.intent.action.APP_PERM_EDITOR");intent.setClassName("com.miui.securitycenter", "com.miui.permcenter.permissions.AppPermissionsEditorActivity");intent.putExtra("extra_pkgname", packageName);} else if ("V8".equals(rom) || "V9".equals(rom)) {intent.setAction("miui.intent.action.APP_PERM_EDITOR");intent.setClassName("com.miui.securitycenter", "com.miui.permcenter.permissions.PermissionsEditorActivity");intent.putExtra("extra_pkgname", packageName);} else if ("V130".equals(rom)){intent= new Intent("miui.intent.action.APP_PERM_EDITOR");intent.setClassName("com.miui.securitycenter", "com.miui.permcenter.permissions.PermissionsEditorActivity");intent.putExtra("extra_pkgname", mContext.getPackageName());}elsegoIntentSetting();mContext.startActivity(intent);}private void goMeiZuManager() {try {Intent intent = new Intent("com.meizu.safe.security.SHOW_APPSEC");intent.addCategory(Intent.CATEGORY_DEFAULT);intent.putExtra("packageName", packageName);mContext.startActivity(intent);} catch (ActivityNotFoundException localActivityNotFoundException) {localActivityNotFoundException.printStackTrace();goIntentSetting();}}private void goSangXinManager() {//三星4.3可以直接跳转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) {//Timber.e(e);}}private void goOppoManager() {doStartApplicationWithPackageName("com.coloros.safecenter");}/*** doStartApplicationWithPackageName("com.yulong.android.security:remote")* 和Intent open = getPackageManager().getLaunchIntentForPackage("com.yulong.android.security:remote");* startActivity(open);* 本质上没有什么区别,通过Intent open...打开比调用doStartApplicationWithPackageName方法更快,也是android本身提供的方法*/private void goCoolpadManager() {doStartApplicationWithPackageName("com.yulong.android.security:remote");/*  Intent openQQ = getPackageManager().getLaunchIntentForPackage("com.yulong.android.security:remote");startActivity(openQQ);*/}private void goVivoManager() {doStartApplicationWithPackageName("com.bairenkeji.icaller");/*   Intent openQQ = getPackageManager().getLaunchIntentForPackage("com.vivo.securedaemonservice");startActivity(openQQ);*/}/*** 此方法在手机各个机型设置中已经失效** @return*/private Intent getAppDetailSettingIntent() {Intent localIntent = new Intent();localIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);if (Build.VERSION.SDK_INT >= 9) {localIntent.setAction("android.settings.APPLICATION_DETAILS_SETTINGS");localIntent.setData(Uri.fromParts("package", mContext.getPackageName(), null));} else if (Build.VERSION.SDK_INT <= 8) {localIntent.setAction(Intent.ACTION_VIEW);localIntent.setClassName("com.android.settings", "com.android.settings.InstalledAppDetails");localIntent.putExtra("com.android.settings.ApplicationPkgName", mContext.getPackageName());}return localIntent;}private void doStartApplicationWithPackageName(String packagename) {// 通过包名获取此APP详细信息,包括Activities、services、versioncode、name等等PackageInfo packageinfo = null;try {packageinfo = mContext.getPackageManager().getPackageInfo(packagename, 0);} catch (PackageManager.NameNotFoundException e) {//Timber.e(e);}if (packageinfo == null) {return;}try {// 创建一个类别为CATEGORY_LAUNCHER的该包名的IntentIntent resolveIntent = new Intent(Intent.ACTION_MAIN, null);resolveIntent.addCategory(Intent.CATEGORY_LAUNCHER);resolveIntent.setPackage(packageinfo.packageName);// 通过getPackageManager()的queryIntentActivities方法遍历List<ResolveInfo> resolveinfoList = mContext.getPackageManager().queryIntentActivities(resolveIntent, 0);ResolveInfo resolveinfo = resolveinfoList.iterator().next();if (resolveinfo != null) {// packageName参数2 = 参数 packnameString packageName = resolveinfo.activityInfo.packageName;// 这个就是我们要找的该APP的LAUNCHER的Activity[组织形式:packageName参数2.mainActivityname]String className = resolveinfo.activityInfo.name;// LAUNCHER IntentIntent intent = new Intent(Intent.ACTION_MAIN);intent.addCategory(Intent.CATEGORY_LAUNCHER);// 设置ComponentName参数1:packageName参数2:MainActivity路径ComponentName cn = new ComponentName(packageName, className);intent.setComponent(cn);mContext.startActivity(intent);}} catch (Exception e) {goIntentSetting();}}
}

二、调用的地方

JumpPermissionManagement m_JumpPermissionManagement = new JumpPermissionManagement(m_context);
m_JumpPermissionManagement.jumpPermissionPage();

三、三星手机的界面

 四、小米平板

1、打开settings里面的该app的权限界面,执行

dumpsys activity | grep mFocusedApp

 2、跳转的地方代码

private void goXiaoMiMainager() {String rom = getMiuiVersion();Log.d(TAG,"getMiuiVersion:"+rom);Intent intent = new Intent();if ("V6".equals(rom) || "V7".equals(rom)) {intent.setAction("miui.intent.action.APP_PERM_EDITOR");intent.setClassName("com.miui.securitycenter", "com.miui.permcenter.permissions.AppPermissionsEditorActivity");intent.putExtra("extra_pkgname", packageName);} else if ("V8".equals(rom) || "V9".equals(rom)) {intent.setAction("miui.intent.action.APP_PERM_EDITOR");intent.setClassName("com.miui.securitycenter", "com.miui.permcenter.permissions.PermissionsEditorActivity");intent.putExtra("extra_pkgname", packageName);} else if ("V130".equals(rom)){intent= new Intent("miui.intent.action.APP_PERM_EDITOR");intent.setClassName("com.miui.securitycenter", "com.miui.permcenter.permissions.PermissionsEditorActivity");intent.putExtra("extra_pkgname", mContext.getPackageName());}elsegoIntentSetting();mContext.startActivity(intent);}

3、效果

 

 

五、参考文章

Android调用miui给权限,Android跳转至MIUI权限设置页面_喝冰红茶的虫的博客-CSDN博客

Android兼容适配 - 不同机型跳转应用权限设置页面_android跳转应用权限设置_Modu_Liu的博客-CSDN博客

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/60695.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【ROM定制】Android 12 制作『MIUI官改』那点事④修改

作者&#xff1a;小谢 内容&#xff1a;「MIUI官改」的修改 时间&#xff1a;2022.10.14 机型&#xff1a;小米10 安卓&#xff1a;Android 12 版本&#xff1a;V13.0.7.0稳定版 制作『MIUI官改』③工具&#xff1a;查看链接 ————————ROM修改———————— →◆解压…

雅思小作文 / IELTS Task1

The collection of IELTS Test resources. Based on Cambridge English 9-14 Last edited by Tang at 2019.06.11 17.01 Writing Task 1&#xff08;1 or 2 days&#xff09; 为什么我认为在准备writing时&#xff0c;task1更加重要&#xff1f; 因为task1侧重描写&#…

插画培训班学费一般是多少钱

插画培训班学费一般是多少钱&#xff1f;我们看待任何问题都要全面的思考&#xff0c;所以今天将会从三个方面来解析&#xff0c;分别是如何辨别插画培训机构是否靠谱、插画网课平台有哪些、插画培训班如何避坑&#xff0c;赶紧进入精彩内容吧&#xff01; 一&#xff1a;插画培…

首席新媒体运营黎想教程:线上活动推广策划及方案解析

对运营人员来说&#xff0c;活动运营是非常重要的一部分工作内容。那么细化到在线学习平台&#xff0c;组织运营一场活动有哪些要点呢&#xff1f;活动设计上又要注意什么呢&#xff1f;本文将告诉我们答案。 现在我介绍一下&#xff0c;我是青岛艺形艺意文化传媒有限公司创始…

新媒体运营教程:策划一场成功漂亮的活动策划

作为一个运营人&#xff0c;活动推广&#xff08;活动运营&#xff09;是我们运营人在工作当中运用最多的一个推广手段&#xff0c;也是通过活动策划&#xff0c;创意策划、活动互惠、互动反馈&#xff0c;对于引流、交互等行之有效的方式。 所以&#xff0c;在营销推广中的活动…

游戏推广怎么做比较好?做游戏推广时如何选取靠谱的宣传机构

本文由鲨鱼网媒小编为你分享&#xff01; 一、游戏推广的方法 1、多平台游戏推广 游戏推广可以透过多平台进行&#xff0c;比如通过社交媒体、论坛、网站、网络广告、视频、游戏联盟等渠道进行推广。可以通过利用这些渠道进行游戏宣传&#xff0c;可以更有效地提高游戏的知名…

APP社交类项目(类微信)运营之一线上推广

项目二于上月已完成原型设计&#xff0c;内部测试&#xff0c;目前处于推广阶段。下面聊一下我们团队目前想到并正在使用的推广方式&#xff1a; 推广方式主要聚焦于线上&#xff0c; 一、上线各大android平台&#xff0c;现在各大安卓市场都有活动&#xff0c;而且都是免费的&…

新媒体渠道运营推广技巧

渠道运营主要在于帮助产品在不同流量渠道获取到更多的目标用户&#xff0c;进而使得产品在整个生命周期内实现良性循环发展。通过一切可以利用的资源和流量为你的产品带来新增的的手段;其中包括免费、付费、换量、人脉积攒、产品的吸引力、圈内人的推荐、策划活动、内容营销、用…

3an推客推广有效果吗?

3an推客推广有效果。首先&#xff0c;我们都知道&#xff0c;3an推客可以帮助广大商家和小伙伴进行推广和营销。门槛很低&#xff0c;即使你的店铺零销售或者无销售&#xff0c;也可以进入3an推客进行推广。 而且3an推客的推广模式和淘宝客是一样的&#xff0c;也就是我们熟知的…

网络推广具体做什么

很多人都知道网络推广是每家公司必备的营销方法&#xff0c;但许多人就有疑问了&#xff0c;那到底什么是网络推广&#xff0c;网络推广具体做什么呢?今天一米软件就来告诉大家。 网络推广按照渠道来分析&#xff0c;大致可以分为以下几种&#xff1a; 1、搜索引擎营销&#x…

如何选择靠谱的插画培训课程

如何选择靠谱的插画培训课程&#xff0c;今天教你3个维度选择一个靠谱的插画培训班&#xff01; 插画培训机构课程&#xff1a; 1.选择插画培训班时&#xff0c;要先考察课程&#xff0c;看看课程内容是否符合自己的需求&#xff0c;是否有助于提高插画技术。课程设置应该灵活…

如何做好新媒体运营推广工作,黎想首谈一位优秀新媒体运营策划人员的思维模型

学而不思则罔&#xff0c;思而不学则殆。 首先能够打开这篇文章的朋友一定是非常优秀的&#xff0c;懂新媒体运营的&#xff0c;想学习的。那么就请大家花上三五分钟看完这篇对你未来事业具有重要影响意义的文章&#xff01; 在正式介绍前&#xff0c;我想请大家先和我一起做个…

重磅:上海将举办首届人工智能生成内容国际会议AIGC2023

2023首届人工智能生成内容国际会议&#xff08;The 1st International Conference on AI-generated Content&#xff0c;简称AIGC2023&#xff09;将于8月25日至26日在中国上海举行。本次会议得到了复旦大学、中国科技大学、同济大学、上海交通大学、上海人工智能实验室和香港中…

使用谷歌语音识别打造语音管家HiVoice

写在前面的话&#xff1a; 博客园是分享原创精品博文的地方&#xff0c;感觉自己的这篇博客至少是原创&#xff0c;也花了一些心思&#xff0c;自我感觉良好&#xff0c;呵呵&#xff0c;所以还是发布上来了&#xff0c;期望和大家一起交流。这个HiVoice是个人根据时下流行的语…

GBA模拟器 My Boy!的远程连接-wifi连接联机教程

因为有些平板没有蓝牙&#xff0c;所以写了这个教程 有些人不会用&#xff0c;所以。。。 例如两台手机&#xff0c; A手机和B手机 在A手机里打开“系统设置”-“无线和网络”-“绑定和便携式热点”&#xff0c;然后用户名和密码随便设置{不设置也行}&#xff0c;打开便携式…

远程控制teamviewer|远程桌面teamviewer|远程桌面连接软件teamviewer|teamviewer无人值守

如果你只管理10台电脑够你忙1天&#xff0c;那么1000台电脑的时候&#xff0c;你可能需要能够帮助你提供工作效率的利器。TeamViewer就可以帮助我进行统一的用户和设备配置管理&#xff0c;自动大规模部署。TeamViewer产品优异的表现和稳定性是实现这些的关键因素&#xff0c;我…

超好用的windows远程桌面管理工具Remote Desktop Connection Manager

Remote Desktop Connection Manager Remote Desktop Connection Manager (RDCMan) 是微软Windows Live体验团队的主要开发者 Julian Burger开发的一个远程桌面管理工具。简称为RDCMan。RDCMan 可以集中管理我们常用的远程桌面&#xff0c;并可在多个同时打开的远程面桌面间快速…

向日葵远程控制软件。

向日葵远程控制是一款提供远程控制免费的服务的软件。 向日葵远程控制支持主流操作系统Windows、Linux、Mac、Android、iOS跨平台协同操作&#xff0c;在任何可连入互联网的地点&#xff0c;都可以轻松访问和控制安装了向日葵远程控制客户端的设备。整个远控过程&#xff0c;可…

TeamViewerQuickSupport——远程控制安卓设备

远程控制电脑的实现方案有很多&#xff0c;此处不一一举例&#xff0c;但是远程控制手机的工具还真是不常见。 比如从电脑远程控制手机&#xff0c;或者从一部手机远程控制另一部手机。 上流程&#xff1a; 1 主控端&#xff08;电脑或手机&#xff09;安装TeamViewer 2 被控…

win10 tightvnc 连接(多个)树莓派远程桌面控制

Step1&#xff1a;WIN10上安装tightvnc 下载地址&#xff1a;http://www.tightvnc.com/ 下载完成后&#xff0c;默认设置安装即可。 在这一步也可以选择仅安装viewer。 Step2&#xff1a;raspberry上安装tightvncsudo apt-get update //更新软件列表sudo a…