以编程方式自动启动权限
Autostart permission programmatically
我正在开发一个应用程序,我需要向用户询问自动启动权限,为此我打开自动启动权限设置页面,让用户使用以下代码为少数制造商打开我们应用程序的权限:
Intent autostartIntent = new Intent();
if ("xiaomi".equalsIgnoreCase(android.os.Build.MANUFACTURER)) {
autostartIntent.setComponent(new ComponentName("com.miui.securitycenter", "com.miui.permcenter.autostart.AutoStartManagementActivity"));
startActivity(autostartIntent);
} else if ("oppo".equalsIgnoreCase(android.os.Build.MANUFACTURER)) {
autostartIntent.setComponent(new ComponentName("com.coloros.safecenter", "com.coloros.safecenter.permission.startup.StartupAppListActivity"));
startActivity(autostartIntent);
} else if ("vivo".equalsIgnoreCase(android.os.Build.MANUFACTURER)) {
autostartIntent.setComponent(new ComponentName("com.vivo.permissionmanager", "com.vivo.permissionmanager.activity.BgStartUpManagerActivity"));
startActivity(autostartIntent);
} else if ("huawei".equalsIgnoreCase(android.os.Build.MANUFACTURER)) {
autostartIntent.setComponent(new ComponentName("com.huawei.systemmanager", "com.huawei.systemmanager.optimize.process.ProtectActivity"));
startActivity(autostartIntent);
}
此外,当我尝试将用户重定向到以下设备时,我遇到了以下困难:
RealMe 2 Pro,厂商为Oppo,系统无法启动自启动权限Activity。
在 Moto 和 Nokia 设备上,我无法获取 AutoStart 的路径 Activity,因此我可以将用户直接重定向到该页面。
找到了这个问题的解决方案,我正在打开电池优化页面供用户关闭我的应用程序的电池优化。
这是我使用的代码:
AlertDialog.Builder builder = new AlertDialog.Builder(PermissionsActivity.this);
builder.setTitle("Turn off Battery Optimization");
builder.setMessage("Find XYZ in the list of applications and choose ‘Don’t optimize’.");
builder.setPositiveButton("Allow",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
if (Build.VERSION.SDK_INT >= 23) {
Intent intent = new Intent();
intent.setAction(Settings.ACTION_IGNORE_BATTERY_OPTIMIZATION_SETTINGS);
startActivity(intent);
}
}
});
builder.setNegativeButton("Deny", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
finish();
}
});
builder.show();
我正在开发一个应用程序,我需要向用户询问自动启动权限,为此我打开自动启动权限设置页面,让用户使用以下代码为少数制造商打开我们应用程序的权限:
Intent autostartIntent = new Intent();
if ("xiaomi".equalsIgnoreCase(android.os.Build.MANUFACTURER)) {
autostartIntent.setComponent(new ComponentName("com.miui.securitycenter", "com.miui.permcenter.autostart.AutoStartManagementActivity"));
startActivity(autostartIntent);
} else if ("oppo".equalsIgnoreCase(android.os.Build.MANUFACTURER)) {
autostartIntent.setComponent(new ComponentName("com.coloros.safecenter", "com.coloros.safecenter.permission.startup.StartupAppListActivity"));
startActivity(autostartIntent);
} else if ("vivo".equalsIgnoreCase(android.os.Build.MANUFACTURER)) {
autostartIntent.setComponent(new ComponentName("com.vivo.permissionmanager", "com.vivo.permissionmanager.activity.BgStartUpManagerActivity"));
startActivity(autostartIntent);
} else if ("huawei".equalsIgnoreCase(android.os.Build.MANUFACTURER)) {
autostartIntent.setComponent(new ComponentName("com.huawei.systemmanager", "com.huawei.systemmanager.optimize.process.ProtectActivity"));
startActivity(autostartIntent);
}
此外,当我尝试将用户重定向到以下设备时,我遇到了以下困难:
RealMe 2 Pro,厂商为Oppo,系统无法启动自启动权限Activity。
在 Moto 和 Nokia 设备上,我无法获取 AutoStart 的路径 Activity,因此我可以将用户直接重定向到该页面。
找到了这个问题的解决方案,我正在打开电池优化页面供用户关闭我的应用程序的电池优化。
这是我使用的代码:
AlertDialog.Builder builder = new AlertDialog.Builder(PermissionsActivity.this);
builder.setTitle("Turn off Battery Optimization");
builder.setMessage("Find XYZ in the list of applications and choose ‘Don’t optimize’.");
builder.setPositiveButton("Allow",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
if (Build.VERSION.SDK_INT >= 23) {
Intent intent = new Intent();
intent.setAction(Settings.ACTION_IGNORE_BATTERY_OPTIMIZATION_SETTINGS);
startActivity(intent);
}
}
});
builder.setNegativeButton("Deny", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
finish();
}
});
builder.show();