Skip to content

Instantly share code, notes, and snippets.

@hhhaiai
Created July 30, 2020 08:06
Show Gist options
  • Save hhhaiai/6adcb558d972ebda19eba8401b84bdd1 to your computer and use it in GitHub Desktop.
Save hhhaiai/6adcb558d972ebda19eba8401b84bdd1 to your computer and use it in GitHub Desktop.
## 辅助工具页面
``` java
// vivo X7 (5.1.1) 不需要密码。 安装页面 com.bbk.launcher2/.Launcher
// oppo A59S (5.1) 密码框 com.coloros.safecenter/.verification.login.AccountActivity
// oppo A59S (5.1) 安装界面 com.android.packageinstaller/.OppoPackageInstallerActivity
// vivo Z1 (8.1.0) 安装框 com.bbk.account/.activity.AccountVerifyActivity
// vivo Z1 (8.1.0) 安装页面 com.android.packageinstaller/.VivoPackageInstallerActivity
// vivo Y69A (7.0) 密码框 com.bbk.account/.activity.AccountVerifyActivity
// vivo Y69A (7.0) 安装页面 com.android.packageinstaller/.PackageInstallerActivity
// vivo X21A (9) 密码框 com.bbk.account/.activity.AccountVerifyActivity
// vivo X21A (9) 安装页面 com.android.packageinstaller/.VivoPackageInstallerActivity
// vivo Y23L (4.4.4) 告警框 com.bbk.launcher2/.Launcher(桌面的,使用之前的包名) 需要点击"好"的按钮 然后点击安装就行
// vivo R9s (6.0.1) 密码框 com.coloros.safecenter/.verification.login.AccountActivity
// vivo R9s (6.0.1) 安装页面 com.android.packageinstaller/.OppoPackageInstallerActivity
```
## 设置页面名称
"选择活动", "com.android.settings.ActivityPicker"  
"设置GSM/UMTS波段", "com.android.settings.BandMode"  
"电池信息", "com.android.settings.BatteryInfo"  
"日期和时间设置2", "com.android.settings.DateTimeSettingsSetupWizard"  
"开发者选项", "com.android.settings.DevelopmentSettings"  
"设备管理器", "com.android.settings.DeviceAdminSettings"  
"显示字体大小及预览", "com.android.settings.Display"  
"显示设置", "com.android.settings.DisplaySettings"  
"语言和输入法", "com.android.settings.LanguageSettings"  
"管理应用", "com.android.settings.ManageApplications"  
"格式化手机闪存", "com.android.settings.MediaFormat"  
"代理设置", "com.android.settings.ProxySelector"  
"手机信息", "com.android.settings.RadioInfo"  
"正在运行的程序", "com.android.settings.RunningServices"  
"安全设置", "com.android.settings.SecuritySettings"  
"设置", "com.android.settings.Settings"  
"安全信息", "com.android.settings.SettingsSafetyLegalActivity"  
"声音设置", "com.android.settings.SoundSettings"  
"测试", "com.android.settings.TestingSettings"  
"绑定与便携式热点", "com.android.settings.TetherSettings"  
"使用情况统计", "com.android.settings.UsageStats"  
"用户词典", "com.android.settings.UserDictionarySettings"
"辅助功能设置", "com.android.settings.AccessibilitySettings"  //找不到
"APN设置", "com.android.settings.ApnSettings"  //不能跳转
"应用程序设置", "com.android.settings.ApplicationSettings"  //找不到
"日期和时间设置", "com.android.settings.DateTimeSettings"  //找不到
"关于手机", "com.android.settings.DeviceInfoSettings"  //找不到
"底座设置", "com.android.settings.DockSettings"  //找不到
"SIM卡锁定设置", "com.android.settings.IccLockSettings"  //闪退
"语言和键盘设置", "com.android.settings.InstalledAppDetails"  //找不到
"选择手机语言", "com.android.settings.LocalePicker"  //找不到
"选择手机语言2", "com.android.settings.LocalePickerInSetupWizard"  //找不到
"恢复出厂设置", "com.android.settings.MasterClear"  //找不到
"设置键盘", "com.android.settings.PhysicalKeyboardSettings"  //找不到
"隐私设置", "com.android.settings.PrivacySettings"  //找不到
"文字转语音设置", "com.android.settings.TextToSpeechSettings"  //找不到
"语音输入与输出设置", "com.android.settings.VoiceInputOutputSettings"  //找不到
"无线和网络设置", "com.android.settings.WirelessSettings"  //找不到
## 设置Action
ACTION_ACCESSIBILITY_SETTINGS
辅助功能模块的显示设置。
ACTION_ADD_ACCOUNT
显示屏幕上创建一个新帐户添加帐户。
ACTION_AIRPLANE_MODE_SETTINGS
显示设置,以允许进入/退出飞行模式。
ACTION_APN_SETTINGS
显示设置,以允许配置的APN。
ACTION_APPLICATION_DETAILS_SETTINGS
有关特定应用程序的详细信息的显示屏幕。
ACTION_APPLICATION_DEVELOPMENT_SETTINGS
显示设置,以允许应用程序开发相关的设置配置
ACTION_APPLICATION_SETTINGS
显示设置,以允许应用程序相关的设置配置
ACTION_BLUETOOTH_SETTINGS
显示设置,以允许蓝牙配置
ACTION_DATA_ROAMING_SETTINGS
选择of2G/3G显示设置
ACTION_DATE_SETTINGS
显示日期和时间设置,以允许配置
ACTION_DEVICE_INFO_SETTINGS
显示一般的设备信息设置(序列号,软件版本,电话号码,等)
ACTION_DISPLAY_SETTINGS
显示设置,以允许配置显示
ACTION_INPUT_METHOD_SETTINGS
特别配置的输入方法,允许用户启用输入法的显示设置
ACTION_INPUT_METHOD_SUBTYPE_SETTINGS
显示设置来启用/禁用输入法亚型
ACTION_INTERNAL_STORAGE_SETTINGS
内部存储的显示设置
ACTION_LOCALE_SETTINGS
显示设置,以允许配置的语言环境
ACTION_LOCATION_SOURCE_SETTINGS
显示设置,以允许当前位置源的配置
ACTION_MANAGE_ALL_APPLICATIONS_SETTINGS
显示设置来管理所有的应用程序
ACTION_MANAGE_APPLICATIONS_SETTINGS
显示设置来管理安装的应用程序
ACTION_MEMORY_CARD_SETTINGS
显示设置为存储卡存储
ACTION_NETWORK_OPERATOR_SETTINGS
选择网络运营商的显示设置
ACTION_PRIVACY_SETTINGS
显示设置,以允许配置隐私选项
ACTION_QUICK_LAUNCH_SETTINGS
显示设置,以允许快速启动快捷键的配置
ACTION_SEARCH_SETTINGS
全局搜索显示设置
ACTION_SECURITY_SETTINGS
显示设置,以允许配置的安全性和位置隐私
ACTION_SETTINGS
显示系统设置
ACTION_SOUND_SETTINGS
显示设置,以允许配置声音和音量
ACTION_SYNC_SETTINGS
显示设置,以允许配置同步设置
ACTION_USER_DICTIONARY_SETTINGS
显示设置来管理用户输入字典
ACTION_WIFI_IP_SETTINGS
显示设置,以允许配置一个静态IP地址的Wi – Fi
ACTION_WIFI_SETTINGS
显示设置,以允许Wi – Fi配置
ACTION_WIRELESS_SETTINGS
显示设置,以允许配置,如Wi – Fi,蓝牙和移动网络的无线控制
 
EXTRA_AUTHORITIES
在推出活动的基础上给予的权力限制可选项。
EXTRA_INPUT_METHOD_ID
## 权限请求页适配
``` java
/**
* 权限请求页适配,不同手机系统跳转到不同的权限请求页
*
* @author Donkor
*/
public class PermissionPageUtils {
private final String TAG = "PermissionPageManager";
private Context mContext;
//自己的项目包名
private String packageName="com.donkor.demo";
public PermissionPageUtils(Context context) {
this.mContext = context;
}
public void jumpPermissionPage() {
String name = Build.MANUFACTURER;
L.e(TAG, "jumpPermissionPage --- name : " + name);
switch (name) {
case "HUAWEI":
goHuaWeiMainager();
break;
case "vivo":
goVivoMainager();
break;
case "OPPO":
goOppoMainager();
break;
case "Coolpad":
goCoolpadMainager();
break;
case "Meizu":
goMeizuMainager();
break;
case "Xiaomi":
goXiaoMiMainager();
break;
case "samsung":
goSangXinMainager();
break;
case "Sony":
goSonyMainager();
break;
case "LG":
goLGMainager();
break;
default:
goIntentSetting();
break;
}
}
private void goLGMainager(){
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) {
Toast.makeText(mContext, "跳转失败", Toast.LENGTH_LONG).show();
e.printStackTrace();
goIntentSetting();
}
}
private void goSonyMainager(){
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) {
Toast.makeText(mContext, "跳转失败", Toast.LENGTH_LONG).show();
e.printStackTrace();
goIntentSetting();
}
}
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 static String getMiuiVersion() {
String propName = "ro.miui.ui.version.name";
String line;
BufferedReader input = null;
try {
Process p = Runtime.getRuntime().exec("getprop " + propName);
input = new BufferedReader(
new InputStreamReader(p.getInputStream()), 1024);
line = input.readLine();
input.close();
} catch (IOException ex) {
ex.printStackTrace();
return null;
} finally {
try {
input.close();
} catch (IOException e) {
e.printStackTrace();
}
}
return line;
}
private void goXiaoMiMainager() {
String rom = getMiuiVersion();
L.e(TAG,"goMiaoMiMainager --- rom : "+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 {
goIntentSetting();
}
mContext.startActivity(intent);
}
private void goMeizuMainager() {
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 goSangXinMainager() {
//三星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) {
e.printStackTrace();
}
}
private void goOppoMainager() {
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 goCoolpadMainager() {
doStartApplicationWithPackageName("com.yulong.android.security:remote");
/* Intent openQQ = getPackageManager().getLaunchIntentForPackage("com.yulong.android.security:remote");
startActivity(openQQ);*/
}
private void goVivoMainager() {
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) {
e.printStackTrace();
}
if (packageinfo == null) {
return;
}
// 创建一个类别为CATEGORY_LAUNCHER的该包名的Intent
Intent 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);
Log.e("PermissionPageManager", "resolveinfoList" + resolveinfoList.size());
for (int i = 0; i < resolveinfoList.size(); i++) {
Log.e("PermissionPageManager", resolveinfoList.get(i).activityInfo.packageName + resolveinfoList.get(i).activityInfo.name);
}
ResolveInfo resolveinfo = resolveinfoList.iterator().next();
if (resolveinfo != null) {
// packageName参数2 = 参数 packname
String packageName = resolveinfo.activityInfo.packageName;
// 这个就是我们要找的该APP的LAUNCHER的Activity[组织形式:packageName参数2.mainActivityname]
String className = resolveinfo.activityInfo.name;
// LAUNCHER Intent
Intent 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);
try {
mContext.startActivity(intent);
} catch (Exception e) {
goIntentSetting();
e.printStackTrace();
}
}
}
}
```
## 特殊权限页面
``` java
public static void main(){
String sdk = android.os.Build.VERSION.SDK; // SDK号
String model = android.os.Build.MODEL; // 手机型号
String release = android.os.Build.VERSION.RELEASE; // android系统版本号
String brand = Build.BRAND;//手机厂商
if (TextUtils.equals(brand.toLowerCase(), "redmi") || TextUtils.equals(brand.toLowerCase(), "xiaomi")) {
gotoMiuiPermission();//小米
} else if (TextUtils.equals(brand.toLowerCase(), "meizu")) {
gotoMeizuPermission();
} else if (TextUtils.equals(brand.toLowerCase(), "huawei") || TextUtils.equals(brand.toLowerCase(), "honor")) {
gotoHuaweiPermission();
} else {
startActivity(getAppDetailSettingIntent());
}
}
/**
* 跳转到miui的权限管理页面
*/
private void gotoMiuiPermission() {
try { // MIUI 8
Intent localIntent = new Intent("miui.intent.action.APP_PERM_EDITOR");
localIntent.setClassName("com.miui.securitycenter", "com.miui.permcenter.permissions.PermissionsEditorActivity");
localIntent.putExtra("extra_pkgname", context.getPackageName());
context.startActivity(localIntent);
} catch (Exception e) {
try { // MIUI 5/6/7
Intent localIntent = new Intent("miui.intent.action.APP_PERM_EDITOR");
localIntent.setClassName("com.miui.securitycenter", "com.miui.permcenter.permissions.AppPermissionsEditorActivity");
localIntent.putExtra("extra_pkgname", context.getPackageName());
context.startActivity(localIntent);
} catch (Exception e1) { // 否则跳转到应用详情
startActivity(getAppDetailSettingIntent());
}
}
}
/**
* 跳转到魅族的权限管理系统
*/
private void gotoMeizuPermission() {
try {
Intent intent = new Intent("com.meizu.safe.security.SHOW_APPSEC");
intent.addCategory(Intent.CATEGORY_DEFAULT);
intent.putExtra("packageName", BuildConfig.APPLICATION_ID);
startActivity(intent);
} catch (Exception e) {
e.printStackTrace();
startActivity(getAppDetailSettingIntent());
}
}
/**
* 华为的权限管理页面
*/
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 >= 9) {
localIntent.setAction("android.settings.APPLICATION_DETAILS_SETTINGS");
localIntent.setData(Uri.fromParts("package", 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", getPackageName());
}
return localIntent;
}
```
## 常规设置
设置主页面
adb shell am start com.android.settings/com.android.settings.Settings
安全
adb shell am start com.android.settings/com.android.settings.SecuritySettings
手机无线信息
adb shell am start com.android.settings/com.android.settings.RadioInfo
更多页面
com.android.settings.AccessibilitySettings 辅助功能设置
com.android.settings.ActivityPicker 选择活动
com.android.settings.ApnSettings APN设置
com.android.settings.ApplicationSettings 应用程序设置
com.android.settings.BandMode 设置GSM/UMTS波段
com.android.settings.BatteryInfo 电池信息
com.android.settings.DateTimeSettings 日期和坝上旅游网时间设置
com.android.settings.DateTimeSettingsSetupWizard 日期和时间设置
com.android.settings.DevelopmentSettings 开发者设置
com.android.settings.DeviceAdminSettings 设备管理器
com.android.settings.DeviceInfoSettings 关于手机
com.android.settings.Display 显示——设置显示字体大小及预览
com.android.settings.DisplaySettings 显示设置
com.android.settings.DockSettings 底座设置
com.android.settings.IccLockSettings SIM卡锁定设置
com.android.settings.InstalledAppDetails 语言和键盘设置
com.android.settings.LanguageSettings 语言和键盘设置
com.android.settings.LocalePicker 选择手机语言
com.android.settings.LocalePickerInSetupWizard 选择手机语言
com.android.settings.ManageApplications 已下载(安装)软件列表
com.android.settings.MasterClear 恢复出厂设置
com.android.settings.MediaFormat 格式化手机闪存
com.android.settings.PhysicalKeyboardSettings 设置键盘
com.android.settings.PrivacySettings 隐私设置
com.android.settings.ProxySelector 代理设置
com.android.settings.RadioInfo 手机信息
com.android.settings.RunningServices 正在运行的程序(服务)
com.android.settings.SecuritySettings 位置和安全设置
com.android.settings.Settings 系统设置
com.android.settings.SettingsSafetyLegalActivity 安全信息
com.android.settings.SoundSettings 声音设置
com.android.settings.TestingSettings 测试——显示手机信息、电池信息、使用情况统计、Wifi information、服务信息
com.android.settings.TetherSettings 绑定与便携式热点
com.android.settings.TextToSpeechSettings 文字转语音设置
com.android.settings.UsageStats 使用情况统计
com.android.settings.UserDictionarySettings 用户词典
com.android.settings.VoiceInputOutputSettings 语音输入与输出设置
com.android.settings.WirelessSettings 无线和网络设置
## 系统自启动设置页面
```Java
public class OpenAutoStartUtil {
/**
* Get Mobile Type
*
* @return
*/
private static String getMobileType() {
return Build.MANUFACTURER;
}
/**
* GoTo Open Self Setting Layout
* Compatible Mainstream Models 兼容市面主流机型
*
* @param context
*/
public static void jumpStartInterface(Context context) {
Intent intent = new Intent();
try {
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
Log.e("HLQ_Struggle", "******************当前手机型号为:" + getMobileType());
ComponentName componentName = null;
if (getMobileType().equals("Xiaomi")) { // 红米Note4测试通过
componentName = new ComponentName("com.miui.securitycenter",
"com.miui.permcenter.autostart.AutoStartManagementActivity");
} else if (getMobileType().equals("Letv")) { // 乐视2测试通过
intent.setAction("com.letv.android.permissionautoboot");
} else if (getMobileType().equals("samsung")) { // 三星Note5测试通过
componentName = new ComponentName("com.samsung.android.sm_cn",
"com.samsung.android.sm.ui.ram.AutoRunActivity");
} else if (getMobileType().equals("HUAWEI")) { // 华为测试通过
componentName = new ComponentName("com.huawei.systemmanager",
"com.huawei.systemmanager.optimize.process.ProtectActivity");
} else if (getMobileType().equals("vivo")) { // VIVO测试通过
componentName = ComponentName.unflattenFromString("com.iqoo.secure" +
"/.safeguard.PurviewTabActivity");
} else if (getMobileType().equals("Meizu")) { //万恶的魅族
// 通过测试,发现魅族是真恶心,也是够了,之前版本还能查看到关于设置自启动这一界面,
// 系统更新之后,完全找不到了,心里默默Fuck!
// 针对魅族,我们只能通过魅族内置手机管家去设置自启动,
// 所以我在这里直接跳转到魅族内置手机管家界面,具体结果请看图
componentName = ComponentName.unflattenFromString("com.meizu.safe" +
"/.permission.PermissionMainActivity");
} else if (getMobileType().equals("OPPO")) { // OPPO R8205测试通过
componentName = ComponentName.unflattenFromString("com.oppo.safe" +
"/.permission.startup.StartupAppListActivity");
Intent intentOppo = new Intent();
intentOppo.setClassName("com.oppo.safe/.permission.startup",
"StartupAppListActivity");
if (context.getPackageManager().resolveActivity(intentOppo, 0) == null) {
componentName = ComponentName.unflattenFromString("com.coloros.safecenter" +
"/.startupapp.StartupAppListActivity");
}
} else if (getMobileType().equals("ulong")) { // 360手机 未测试
componentName = new ComponentName("com.yulong.android.coolsafe",
".ui.activity.autorun.AutoRunListActivity");
} else {
// 以上只是市面上主流机型,由于公司你懂的,所以很不容易才凑齐以上设备
// 针对于其他设备,我们只能调整当前系统app查看详情界面
// 在此根据用户手机当前版本跳转系统设置界面
if (Build.VERSION.SDK_INT >= 9) {
intent.setAction("android.settings.APPLICATION_DETAILS_SETTINGS");
intent.setData(Uri.fromParts("package", context.getPackageName(), null));
} else if (Build.VERSION.SDK_INT <= 8) {
intent.setAction(Intent.ACTION_VIEW);
intent.setClassName("com.android.settings",
"com.android.settings.InstalledAppDetails");
intent.putExtra("com.android.settings.ApplicationPkgName",
context.getPackageName());
}
}
intent.setComponent(componentName);
context.startActivity(intent);
} catch (Exception e) {//抛出异常就直接打开设置页面
intent = new Intent(Settings.ACTION_SETTINGS);
context.startActivity(intent);
}
}
}
```
## Android6.0 打开自启动管理页面(华为、小米)
Android在6.0之后就禁止了APP拉起其他的APP,这样子在一些推送服务无法通过拉起其他APP来接受通知,当你的APP没有在线状态下是收不到推送的,包括华为推送和小米推送,小米推送还好一点,可以通过推送系统的通知实现推送,但是推送自定义消息就无法送达了。当然,如果我们打开了APP的自启动权限后是可以收到华为推送和小米推送的,它通过系统把我们的APP启动起来然后就可以收到推送了。当然,要打开自启动权限必须通过手动去打开,我们只能引导用户手动去打开,就像触宝电话那样可以通过引导用户去打开权限。那么我们怎么可以快速的打开自启动页面呢,其实通过代码是可以打开的。
```Java
/*打开自启动管理页*/
public static void openStart(Context context){
if(Build.VERSION.SDK_INT < 23){
return;
}
String system = getSystem();
Intent intent = new Intent();
if(system.equals(SYS_EMUI)){//华为
ComponentName componentName = new ComponentName("com.huawei.systemmanager","com.huawei.systemmanager.startupmgr.ui.StartupNormalAppListActivity");
intent.setComponent(componentName);
}else if(system.equals(SYS_MIUI)){//小米
ComponentName componentName = new ComponentName("com.miui.securitycenter", "com.miui.permcenter.autostart.AutoStartManagementActivity");
intent.setComponent(componentName);
}
try{
context.startActivity(intent);
}catch (Exception e){//抛出异常就直接打开设置页面
intent=new Intent(Settings.ACTION_SETTINGS);
context.startActivity(intent);
}
}
```
当然,首先要判断是小米系统还是华为系统,在http://blog.csdn.net/jin_qing/article/details/53087164里面有介绍
## 获取Android手机系统当前界面Activity;(第三方app跳转华为,小米,oppo,vivo的自启动管理)
需求:第三方app跳转华为手机的受保护后台;小米手机的自启动管理;oppo手机的某个app的后台冻结;vivo手机的加速白名单;
执行这个指令 adb shell dumpsys activity top
(要是出现adb用不了,error:unknown host service的解决方法
http://www.360doc.com/content/15/0509/22/23129045_469300718.shtml)
执行指令之后的显示
把图片中红线的内容添加到Intent中进行跳转:
```Java
Intent intent = new Intent();
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
ComponentName comp = null;
if (phoneModel.equals("1")) {//华为
comp = ComponentName
.unflattenFromString("com.huawei.systemmanager/.optimize.process.ProtectActivity");
} else if (phoneModel.equals("2")) {//小米
comp = ComponentName
.unflattenFromString("com.miui.securitycenter/com.miui.permcenter.autostart.AutoStartManagementActivity");
} else if (phoneModel.equals("3")) {//vivo
comp = ComponentName
.unflattenFromString("com.iqoo.secure/.ui.phoneoptimize.AddWhiteListActivity");
} else if (phoneModel.equals("4")) {//oppo
comp = ComponentName
.unflattenFromString("com.coloros.oppoguardelf/com.coloros.powermanager.fuelgaue.PowerUsageModelActivity");
}
intent.setComponent(comp);
startActivity(intent);
```
然后就可以测试了;这边的oppo手机只是到了设置中的其他界面?(因为我没有oppo手机);要是本人有的话,可以先把app下载下来。然后在设置中其他界面点击app进入的界面通过指令就可以获取包名和类名
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment