以编程方式将我的应用程序添加到 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();
    }