我希望我的应用在安装后进入自动启动列表。
我知道当我安装类似(whatsapp)的应用程序时,它会自动进入自动启动列表。 我希望我的应用程序是相同的
我在这个问题中尝试了代码 How to Autostart an Android Application?
但遗憾的是,没有任何答案实际上使应用程序自动启动。
不确定我是否做错了
我需要应用程序自动启动的原因只是从Web服务获取通知。因为除非打开或自动启动,否则应用程序不会收到通知
非常感谢您的帮助
感谢
答案 0 :(得分:6)
一些应用程序,如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);
}
答案 1 :(得分:4)
此屏幕/行为不是Android原生的,这意味着您显示的屏幕来自自定义ROM,可能来自特定制造商。
就像你说的那样,其他问题的答案不起作用,但它们是启动/启动应用程序的唯一本机方式。
检查app / custom rom是否有API(要实现的特定广播接收器,或某些SDK ......)。您始终可以反编译实现此行为的其中一个应用,以查看它们在此菜单中的显示方式。
答案 2 :(得分:1)
很少有流行的应用程序在后台运行,而不会在内存清理周期中被杀死(许多流行的OEM定制堆栈ROM来优化电池/内存),因为这些制造商将它们列入“白名单”。对于您的应用程序,您可以手动将其列入白名单(通过设备的相应“设置”),也可以通过将用户重定向到相应的设置页面以将其列入白名单而实用地列入白名单。
请查看详细信息here
答案 3 :(得分:1)
我已尝试使用以下代码将我的应用列入白名单
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();
}