Files
notiMessage/app/src/main/java/com/miraclegarden/smsmessage/util/OEMBackgroundHelper.java
2026-04-05 22:29:42 +08:00

147 lines
6.6 KiB
Java

package com.miraclegarden.smsmessage.util;
import android.content.ActivityNotFoundException;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.net.Uri;
import android.os.Build;
import android.os.PowerManager;
import android.provider.Settings;
public class OEMBackgroundHelper {
private static final String MIUI_SECURITY = "com.miui.securitycenter";
private static final String MIUI_AUTOSTART = "com.miui.permcenter.autostart.AutoStartManagementActivity";
private static final String COLOROS_SAFECENTER = "com.coloros.safecenter";
private static final String COLOROS_STARTUP = "com.coloros.safecenter.permission.startup.StartupAppListActivity";
private static final String OPPO_SAFE = "com.oppo.safe";
private static final String OPPO_STARTUP = "com.oppo.safe.permission.startup.StartupAppListActivity";
private static final String VIVO_PERMISSION = "com.vivo.permissionmanager";
private static final String VIVO_BGSTARTUP = "com.vivo.permissionmanager.activity.BgStartUpManagerActivity";
private static final String IQOO_SECURE = "com.iqoo.secure";
private static final String IQOO_BGSTARTUP = "com.iqoo.secure.ui.phoneoptimize.BgStartUpManager";
private static final String HUAWEI_SYSTEM_MANAGER = "com.huawei.systemmanager";
private static final String HUAWEI_STARTUP_CTRL = "com.huawei.systemmanager.startupmgr.ui.StartupNormalAppListActivity";
private static final String HUAWEI_POWER_MANAGER = "com.huawei.systemmanager.power.ui.HwPowerManagerActivity";
public static void openAutoStartSettings(Context context) {
String manufacturer = Build.MANUFACTURER.toLowerCase();
Intent intent = new Intent();
boolean success = false;
try {
if (manufacturer.contains("xiaomi") || manufacturer.contains("redmi")) {
intent.setComponent(new ComponentName(MIUI_SECURITY, MIUI_AUTOSTART));
success = true;
} else if (manufacturer.contains("oppo")) {
if (tryStartActivity(context, intent, COLOROS_SAFECENTER, COLOROS_STARTUP)) return;
if (tryStartActivity(context, intent, OPPO_SAFE, OPPO_STARTUP)) return;
} else if (manufacturer.contains("realme")) {
if (tryStartActivity(context, intent, COLOROS_SAFECENTER, COLOROS_STARTUP)) return;
} else if (manufacturer.contains("vivo")) {
if (tryStartActivity(context, intent, VIVO_PERMISSION, VIVO_BGSTARTUP)) return;
if (tryStartActivity(context, intent, IQOO_SECURE, IQOO_BGSTARTUP)) return;
} else if (manufacturer.contains("huawei") || manufacturer.contains("honor")) {
if (tryStartActivity(context, intent, HUAWEI_SYSTEM_MANAGER, HUAWEI_STARTUP_CTRL)) return;
if (tryStartActivity(context, intent, HUAWEI_SYSTEM_MANAGER, HUAWEI_POWER_MANAGER)) return;
} else if (manufacturer.contains("oneplus")) {
openBatteryOptimizationSettings(context);
return;
} else if (manufacturer.contains("samsung")) {
openAppBatterySettings(context);
return;
}
if (success) {
context.startActivity(intent);
} else {
openBatteryOptimizationSettings(context);
}
} catch (ActivityNotFoundException e) {
openBatteryOptimizationSettings(context);
}
}
public static void openBatteryOptimizationSettings(Context context) {
try {
Intent intent = new Intent(Settings.ACTION_IGNORE_BATTERY_OPTIMIZATION_SETTINGS);
context.startActivity(intent);
} catch (ActivityNotFoundException e) {
Intent intent = new Intent(Settings.ACTION_SETTINGS);
context.startActivity(intent);
}
}
public static void requestBatteryOptimizationExemption(Context context) {
if (!isIgnoringBatteryOptimizations(context)) {
try {
Intent intent = new Intent(Settings.ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS);
intent.setData(Uri.parse("package:" + context.getPackageName()));
context.startActivity(intent);
} catch (ActivityNotFoundException e) {
openBatteryOptimizationSettings(context);
}
}
}
public static boolean isIgnoringBatteryOptimizations(Context context) {
PowerManager pm = (PowerManager) context.getSystemService(Context.POWER_SERVICE);
return pm.isIgnoringBatteryOptimizations(context.getPackageName());
}
public static String getManufacturer() {
return Build.MANUFACTURER;
}
public static boolean needsAutoStartPermission() {
String manufacturer = Build.MANUFACTURER.toLowerCase();
return manufacturer.contains("xiaomi") || manufacturer.contains("redmi")
|| manufacturer.contains("oppo") || manufacturer.contains("realme")
|| manufacturer.contains("vivo") || manufacturer.contains("huawei")
|| manufacturer.contains("honor") || manufacturer.contains("oneplus");
}
public static String getAutoStartPermissionName() {
String manufacturer = Build.MANUFACTURER.toLowerCase();
if (manufacturer.contains("xiaomi") || manufacturer.contains("redmi")) {
return "自启动";
} else if (manufacturer.contains("oppo") || manufacturer.contains("realme")) {
return "自动启动";
} else if (manufacturer.contains("vivo")) {
return "后台启动";
} else if (manufacturer.contains("huawei") || manufacturer.contains("honor")) {
return "自动启动管理";
} else if (manufacturer.contains("oneplus")) {
return "电池优化";
}
return "电池/自启动";
}
private static boolean tryStartActivity(Context context, Intent intent, String pkg, String cls) {
try {
intent.setComponent(new ComponentName(pkg, cls));
context.startActivity(intent);
return true;
} catch (ActivityNotFoundException e) {
return false;
}
}
private static void openAppBatterySettings(Context context) {
try {
Intent intent = new Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS);
intent.setData(Uri.parse("package:" + context.getPackageName()));
context.startActivity(intent);
} catch (ActivityNotFoundException e) {
Intent intent = new Intent(Settings.ACTION_SETTINGS);
context.startActivity(intent);
}
}
}