Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
147 lines
6.6 KiB
Java
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);
|
|
}
|
|
}
|
|
} |