对于像oppo,vivo,MI等一些设备,前景服务在Doze模式下被杀死

问题描述 投票:0回答:2

我正在使用前台服务来跟踪用户的实时位置。它在股票Android设备上工作正常,但在像oppo,vivo,Mi等品牌,当设备进入打盹模式时,应用程序被杀死。我还尝试使用FCM通知仍然没用。我只是想知道Uber或Ola是否能够破解这一点,我见过大多数司机都在使用这些品牌。如何在打盹模式下保持他们的应用程序活着?

java android alarmmanager foreground-service
2个回答
0
投票

你需要为oppo,vivo和mi中的应用启用自动启动权限

尝试以下代码为我工作

 private void keepServicesInChineseDevices() {
        Intent intent = new Intent();

        String manufacturer = android.os.Build.MANUFACTURER;

        switch (manufacturer) {

            case "xiaomi":
                intent.setComponent(new ComponentName("com.miui.securitycenter",
                        "com.miui.permcenter.autostart.AutoStartManagementActivity"));
                break;
            case "oppo":
                intent.setComponent(new ComponentName("com.coloros.safecenter",
                        "com.coloros.safecenter.permission.startup.StartupAppListActivity"));

                break;
            case "vivo":
                intent.setComponent(new ComponentName("com.vivo.permissionmanager",
                        "com.vivo.permissionmanager.activity.BgStartUpManagerActivity"));
                break;
        }

        List<ResolveInfo> arrayList = getPackageManager().queryIntentActivities(intent,
                PackageManager.MATCH_DEFAULT_ONLY);

        if (arrayList.size() > 0) {
            AppDataHolder.getSession(MyApplication.getAppContext()).setPermissionForChineseDevices(true);
            startActivity(intent);
        }
    }

this article is also helpful


0
投票

非常感谢你们,感谢您的回复。我想告诉你,我写了一封谷歌支持的电子邮件,并强调了谷歌支持的问题,他们在回复中提到回复:“谢谢你伸出援手。

您似乎无法在某些Android设备上收到推送通知。在检查受影响的设备时,它受设备特定(已知)问题的影响,并且由OEM功能引起的电池优化。当应用程序被刷掉时,在已经实现了这种功能的一些OEM中,应用程序被视为类似于“强制停止”机制,并且已经停止了刷新的应用程序注册的服务。

目前,我强烈建议您联系受影响的OEM厂商的支持团队,以帮助他们从最终解决问题。您可以在此博客文章(https://www.freecodecamp.org/news/why-your-push-notifications-never-see-the-light-of-day-3fa297520793/)中阅读有关此问题的更多信息以及解决此问题的可能方法。

© www.soinside.com 2019 - 2024. All rights reserved.