在开发中遇到这样一个问题,当我们写了开机自启后发现有的手机并不能很顺利的自启动,因为手机管家有最高权限,有个自启动管理,想直接调到这个页面把自己的app的自启动打开就可以,还有oppo,vivo,加入白名单,查了好多资料发现没有直接跳入自启动的界面的Intent, 我想到了可以通过手机的包名类名可以直接跳转,但是手机型号这么多,我怎么知道每个管家的包名类名是个啥,查资料发现 通过这个adb shell dumpsys activity top 命令可以捕捉到当前Activity的类名,手机型号太多,就抓了几个市场常用的手机!
这样他的类名包名就出来了,我是判断了手机型号,
private void selfStartManagerSettingIntent(Context context) {
String mtype = android.os.Build.MODEL; // 手机型号
Intent intent = new Intent();
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
ComponentName componentName = null;
if (mtype.startsWith("Redmi")||mtype.startsWith("MI")) {
componentName = new ComponentName("com.miui.securitycenter", "com.miui.permcenter.autostart.AutoStartManagementActivity");
} else if (mtype.startsWith("HUAWEI")) {
componentName = new ComponentName("com.huawei.systemmanager", "com.huawei.systemmanager.startupmgr.ui.StartupNormalAppListActivity");
} else if (mtype.startsWith("vivo")) {
Log.e(TAG, "selfStartManagerSettingIntent: vivo");
componentName = new ComponentName("com.iqoo.secure", "com.iqoo.secure.ui.phoneoptimize.AddWhiteListActivity");
} else if (mtype.startsWith("ZTE")) {
// /.autorun.AppAutoRunManager
componentName = new ComponentName("com.zte.heartyservice", "com.zte.heartyservice.autorun.AppAutoRunManager");
} else if (mtype.startsWith("F")) {
Log.e(TAG, "selfStartManagerSettingIntent: F");
componentName = new ComponentName("com.gionee.softmanager", "com.gionee.softmanager.oneclean.AutoStartMrgActivity");
} else if (mtype.startsWith("oppo")) {
componentName = new ComponentName("oppo com.coloros.oppoguardelf", "com.coloros.powermanager.fuelgaue.PowerUsageModelActivity");
}
intent.setComponent(componentName);
try {
context.startActivity(intent);
} catch (Exception e) {//抛出异常就直接打开设置页面
// intent = new Intent(Settings.ACTION_SETTINGS);
// context.startActivity(intent);
}
}
本文标签:
跳转管家界面手机android
发表评论