AutoStartUtil【打開自啓動設置界面】

參考資料

Android6.0 打開自啓動管理頁面(華爲、小米)html

Android打開自啓動設置頁面android

Android 機型設置自啓動的跳轉界面app

代碼

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

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);//打開自啓動設置界面
相關文章
相關標籤/搜索