权限-> 自动启动中) 这意味着当应用程序未运行时,任何广播接收器都不会收到任何内容。所以 BO-6ren">
gpt4 book ai didi

android - 无法从小米设备的后台唤醒应用程序,直到手动启用 "Autostart"

转载 作者:行者123 更新时间:2023-12-04 23:37:40 25 4
gpt4 key购买 nike

在小米的 MI 设备上,他们的安全应用程序中有一个关闭/打开“自动启动”的功能。 (在安全应用程序-> 权限-> 自动启动中)

enter image description here

这意味着当应用程序未运行时,任何广播接收器都不会收到任何内容。所以 BOOT_COMPLETED、USER_PRESENT、CONNECTIVITY_CHANGE 等......不起作用。 (在应用程序处于前台后它们会工作一段时间,但很快就会停止)。在用户从小米版本的“最近的应用程序”中滑动应用程序后,它们也会停止工作

甚至 GCM 也无法唤醒它

对于消息传递应用程序,这是一个杀手。

默认情况下,Whatsapp、Messenger、Flipkart 等应用程序是默认启用的(即使这些应用程序没有预装)。

大多数其他应用程序默认禁用此功能。例如。默认情况下禁用 Slack。

有没有办法默认进入这个白名单?

最佳答案

您实际上可以为您的应用禁用电池优化。它将关闭应用程序的所有优化,因此它不会被杀死。

boolean isIgnoringBatteryOptimizations = pm.isIgnoringBatteryOptimizations(getPackageName());
if(!isIgnoringBatteryOptimizations){
Intent intent = new Intent();
intent.setAction(Settings.ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS);
intent.setData(Uri.parse("package:" + getPackageName()));
startActivityForResult(intent, MY_IGNORE_OPTIMIZATION_REQUEST);
}
现在检查是否已为您的应用禁用优化。
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == MY_IGNORE_OPTIMIZATION_REQUEST) {
PowerManager pm = (PowerManager)getSystemService(Context.POWER_SERVICE);
boolean isIgnoringBatteryOptimizations = pm.isIgnoringBatteryOptimizations(getPackageName());
if(isIgnoringBatteryOptimizations){
// Ignoring battery optimization
}else{
// Not ignoring battery optimization
}
}
}

关于android - 无法从小米设备的后台唤醒应用程序,直到手动启用 "Autostart",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33820463/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com