以编程方式将我的应用程序添加到 android 中的 AutoStart 应用程序列表
Add my app to AutoStart apps list in android programmatically
我希望我的应用在安装后出现在自动启动列表中。
我知道当我安装像 (whatsapp) 这样的应用程序时,它会自动进入自动启动列表。
我希望我的应用程序是一样的
我试过这个问题的代码
How to Autostart an Android Application?
但不幸的是,没有一个答案真正使应用程序自动启动。
不确定我是否做错了什么
我需要应用程序自动启动的原因只是为了从网络服务获取通知。因为应用程序不会收到通知,除非它打开或自动启动
感谢您的帮助
谢谢
此 screen/behaviour 不是 Android 的原生版本,这意味着您显示的屏幕来自自定义 rom,可能来自特定制造商。
正如您所说,另一个问题的答案不起作用,但它们是在 boot/start 上启动应用程序的唯一原生方式。
检查 app/custom rom 是否有 API(要实现的特定广播接收器,或某些 SDK...)。您始终可以反编译实现此行为的应用程序之一,以查看它们如何显示在此菜单中。
Whatsapp 和 Facebook 等一些应用程序可能已被列入白名单
这就是为什么他们启用了自动启动选项。
但是我已经为小米设备尝试了以下代码希望这可能会有所帮助!!
String manufacturer = "xiaomi";
if(manufacturer.equalsIgnoreCase(android.os.Build.MANUFACTURER)) {
//this will open auto start screen where user can enable permission for your app
Intent intent = new Intent();
intent.setComponent(new ComponentName("com.miui.securitycenter", "com.miui.permcenter.autostart.AutoStartManagementActivity"));
startActivity(intent);
}
很少有流行的应用程序 运行 在后台不在内存清理周期中被杀死(许多流行的 OEM 自定义堆栈 ROM 以进行 battery/memory 优化),因为它们 "White listed"这些制造商。对于您的应用程序,您可以手动将其列入白名单(通过设备的相应 "settings")或通过将用户重定向到相应的设置页面以将应用程序列入白名单。
详情请看here
我已尝试使用以下代码将我的应用列入白名单
try {
final Intent intent = new Intent();
String manufacturer = Build.MANUFACTURER;
if ("xiaomi".equalsIgnoreCase(manufacturer)) {
intent.setComponent(new ComponentName("com.miui.securitycenter", "com.miui.permcenter.autostart.AutoStartManagementActivity"));
} else if ("oppo".equalsIgnoreCase(manufacturer)) {
intent.setComponent(new ComponentName("com.coloros.safecenter", "com.coloros.safecenter.permission.startup.StartupAppListActivity"));
//intent.setComponent(new ComponentName("com.coloros.oppoguardelf", "com.coloros.powermanager.fuelgaue.PowerConsumptionActivity"));
} else if ("vivo".equalsIgnoreCase(manufacturer)) {
intent.setComponent(new ComponentName("com.vivo.permissionmanager", "com.vivo.permissionmanager.activity.BgStartUpManagerActivity"));
} else if ("huawei".equalsIgnoreCase(manufacturer)) {
intent.setComponent(new ComponentName("com.huawei.systemmanager", "com.huawei.systemmanager.optimize.process.ProtectActivity"));
} else {
// applySubmit(false);
return;
}
} catch (Exception e) {
e.printStackTrace();
}
我希望我的应用在安装后出现在自动启动列表中。
我知道当我安装像 (whatsapp) 这样的应用程序时,它会自动进入自动启动列表。 我希望我的应用程序是一样的
我试过这个问题的代码 How to Autostart an Android Application?
但不幸的是,没有一个答案真正使应用程序自动启动。
不确定我是否做错了什么
我需要应用程序自动启动的原因只是为了从网络服务获取通知。因为应用程序不会收到通知,除非它打开或自动启动
感谢您的帮助
谢谢
此 screen/behaviour 不是 Android 的原生版本,这意味着您显示的屏幕来自自定义 rom,可能来自特定制造商。
正如您所说,另一个问题的答案不起作用,但它们是在 boot/start 上启动应用程序的唯一原生方式。
检查 app/custom rom 是否有 API(要实现的特定广播接收器,或某些 SDK...)。您始终可以反编译实现此行为的应用程序之一,以查看它们如何显示在此菜单中。
Whatsapp 和 Facebook 等一些应用程序可能已被列入白名单 这就是为什么他们启用了自动启动选项。
但是我已经为小米设备尝试了以下代码希望这可能会有所帮助!!
String manufacturer = "xiaomi";
if(manufacturer.equalsIgnoreCase(android.os.Build.MANUFACTURER)) {
//this will open auto start screen where user can enable permission for your app
Intent intent = new Intent();
intent.setComponent(new ComponentName("com.miui.securitycenter", "com.miui.permcenter.autostart.AutoStartManagementActivity"));
startActivity(intent);
}
很少有流行的应用程序 运行 在后台不在内存清理周期中被杀死(许多流行的 OEM 自定义堆栈 ROM 以进行 battery/memory 优化),因为它们 "White listed"这些制造商。对于您的应用程序,您可以手动将其列入白名单(通过设备的相应 "settings")或通过将用户重定向到相应的设置页面以将应用程序列入白名单。
详情请看here
我已尝试使用以下代码将我的应用列入白名单
try {
final Intent intent = new Intent();
String manufacturer = Build.MANUFACTURER;
if ("xiaomi".equalsIgnoreCase(manufacturer)) {
intent.setComponent(new ComponentName("com.miui.securitycenter", "com.miui.permcenter.autostart.AutoStartManagementActivity"));
} else if ("oppo".equalsIgnoreCase(manufacturer)) {
intent.setComponent(new ComponentName("com.coloros.safecenter", "com.coloros.safecenter.permission.startup.StartupAppListActivity"));
//intent.setComponent(new ComponentName("com.coloros.oppoguardelf", "com.coloros.powermanager.fuelgaue.PowerConsumptionActivity"));
} else if ("vivo".equalsIgnoreCase(manufacturer)) {
intent.setComponent(new ComponentName("com.vivo.permissionmanager", "com.vivo.permissionmanager.activity.BgStartUpManagerActivity"));
} else if ("huawei".equalsIgnoreCase(manufacturer)) {
intent.setComponent(new ComponentName("com.huawei.systemmanager", "com.huawei.systemmanager.optimize.process.ProtectActivity"));
} else {
// applySubmit(false);
return;
}
} catch (Exception e) {
e.printStackTrace();
}