以编程方式将我的应用程序添加到 android 中的 AutoStart 应用程序列表
Posted
技术标签:
【中文标题】以编程方式将我的应用程序添加到 android 中的 AutoStart 应用程序列表【英文标题】:Add my app to AutoStart apps list in android programmatically 【发布时间】:2017-06-07 01:34:33 【问题描述】:我希望我的应用在安装后出现在自动启动列表中。
我知道当我安装像 (whatsapp) 这样的应用程序时,它会自动进入自动启动列表。 我希望我的应用是一样的
我试过这个问题的代码 How to Autostart an android Application?
但不幸的是,实际上没有一个答案使应用程序自动启动。
不知道是不是我做错了
我需要应用程序自动启动的原因只是为了从 web 服务获取通知。因为除非打开或自动启动,否则应用不会收到通知
非常感谢您的帮助
谢谢
【问题讨论】:
据我所知,应用程序没有真正的自动启动功能。您可以注册 BroadcastReceiver 等,以便您的应用程序自动响应推送消息或意图。大多数安卓智能手机没有您在屏幕截图中显示的屏幕。这是一项自定义功能,主要用于节省电池电量。 您必须在手机启动时使用广播接收器来启动您的应用程序。您的问题仍然需要更清楚,要回答我需要知道您是要启动服务(在后台)还是启动活动(前台)。无论哪种情况,您都需要添加广播接收器 屏幕来自 MIUI android.. 我认为所有 android 都存在相同的功能,因此即使用户每次重启手机时都没有启动 whatsapp,whatsapp 之类的应用也可以收到通知 您可以尝试使用广播接收器并检查它是否有效。 @TheGreat004 不,没有人为此提供解决方案 【参考方案1】: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);
【讨论】:
@AbhishekPandya 这取决于您的逻辑,但必须在调用服务开始之前。请看这里:***.com/a/56335831/5685911 zomato 应用程序也自动启动然后 hpw 自动启动自己的 android 应用程序请帮助我的朋友们【参考方案2】:很少有流行的应用程序在后台运行而不在内存清理周期中被杀死(许多流行的 OEM 定制堆栈 ROM 以进行电池/内存优化),因为它们被这些制造商“列入白名单”。对于您的应用程序,您可以手动(通过设备的相应“设置”)将其列入白名单,也可以通过将用户重定向到相应的设置页面以将应用程序列入白名单来务实地进行白名单。
详情请看here
【讨论】:
【参考方案3】:此屏幕/行为不是 Android 原生的,这意味着您显示的屏幕来自自定义 rom,可能来自特定制造商。
就像你说的那样,另一个问题中的答案不起作用,但它们是在启动/启动时启动应用程序的唯一本地方式。
检查应用程序/自定义 rom 是否具有 API(要实现的特定广播接收器,或某些 SDK...)。您始终可以反编译实现此行为的应用程序之一,以查看它们在此菜单中的显示方式。
【讨论】:
【参考方案4】:我已尝试使用以下代码将我的应用列入白名单
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();
【讨论】:
以上是关于以编程方式将我的应用程序添加到 android 中的 AutoStart 应用程序列表的主要内容,如果未能解决你的问题,请参考以下文章
如何以编程方式将我的 android 应用程序锁定为纵向/横向模式?
Android:以编程方式添加Textview,而不是将文本包装到下一行