Gau*_*tam 10 android android-service android-broadcast android-broadcastreceiver
在小米的MI设备上,有一个功能是在他们的安全应用程序中关闭/打开"自动启动".(在安全性应用程序 - >权限 - >自动启动)
这意味着当应用程序未运行时,任何广播接收器都不会收到任何内容.所以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);
}
Run Code Online (Sandbox Code Playgroud)
现在检查您的应用程序是否已禁用优化。
@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
}
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
692 次 |
| 最近记录: |