1. 程式人生 > >AutoStartUtil【開啟自啟動設定介面】

AutoStartUtil【開啟自啟動設定介面】

參考資料

Android6.0 開啟自啟動管理頁面(華為、小米)

Android開啟自啟動設定頁面

Android 機型設定自啟動的跳轉介面

程式碼

注意:需要搭配《RomUtil【Android判斷手機ROM,用於判斷手機機型】》使用。

package com.why.project.notificationsetutildemo.utils;

import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.net.Uri;
import android.os.Build; import android.provider.Settings; /** * Created by HaiyuKing * Used 自啟動設定工具類 * 參考資料:https://blog.csdn.net/jin_qing/article/details/53087538 * https://blog.csdn.net/gxp1182893781/article/details/78027863 * https://www.jianshu.com/p/35f937c262b9 */ public class AutoStartUtil {
public static final String HAS_OPEN_SETTING_AUTO_START = "hasOpenSettingAutoStart";//是否已經開啟過設定自啟動介面的標記,儲存起來 /*開啟自啟動管理頁*/ public static void openStart(Context context){ if(Build.VERSION.SDK_INT < 23){ return; } Intent intent = new Intent();
if(RomUtil.isEmui()){//華為 ComponentName componentName = new ComponentName("com.huawei.systemmanager","com.huawei.systemmanager.startupmgr.ui.StartupNormalAppListActivity"); intent.setComponent(componentName); }else if(RomUtil.isMiui()){//小米 ComponentName componentName = new ComponentName("com.miui.securitycenter", "com.miui.permcenter.autostart.AutoStartManagementActivity"); intent.setComponent(componentName); }else if(RomUtil.isOppo()){//oppo ComponentName componentName = null; if (Build.VERSION.SDK_INT >=26){ componentName =new ComponentName("com.coloros.safecenter","com.coloros.safecenter.startupapp.StartupAppListActivity"); }else { componentName = new ComponentName("com.color.safecenter", "com.color.safecenter.permission.startup.StartupAppListActivity"); } intent.setComponent(componentName); //上面的程式碼不管用了,因為oppo手機也是手機管家進行自啟動管理 }else if(RomUtil.isVivo()){//Vivo ComponentName componentName = null; if (Build.VERSION.SDK_INT >=26) { componentName =new ComponentName("com.vivo.permissionmanager","com.vivo.permissionmanager.activity.PurviewTabActivity"); }else { componentName = new ComponentName("com.iqoo.secure", "com.iqoo.secure.ui.phoneoptimize.SoftwareManagerActivity"); } intent.setComponent(componentName); }else if(RomUtil.isFlyme()){//魅族 // 通過測試,發現魅族是真噁心,也是夠了,之前版本還能檢視到關於設定自啟動這一介面, // 系統更新之後,完全找不到了,心裡默默Fuck! // 針對魅族,我們只能通過魅族內建手機管家去設定自啟動, // 所以我在這裡直接跳轉到魅族內建手機管家介面,具體結果請看圖 ComponentName componentName = ComponentName.unflattenFromString("com.meizu.safe" + "/.permission.PermissionMainActivity"); intent.setComponent(componentName); }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 = new Intent(Settings.ACTION_SETTINGS); } try{ context.startActivity(intent); }catch (Exception e){//丟擲異常就直接開啟設定頁面 Intent intent1 = new Intent(Settings.ACTION_SETTINGS); context.startActivity(intent1); } } }

使用

AutoStartUtil.openStart(mContext);//開啟自啟動設定介面