记录一个app忽略电池优化的工具类:
/**
* 忽略电池优化
*/
public void ignoreBatteryOptimization(Activity activity) {
PowerManager powerManager = (PowerManager) getSystemService(POWER_SERVICE);
boolean hasIgnored = powerManager.isIgnoringBatteryOptimizations(activity.getPackageName());
// 判断当前APP是否有加入电池优化的白名单,如果没有,弹出加入电池优化的白名单的设置对话框。
if(!hasIgnored) {
Intent intent = new Intent(Settings.ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS);
intent.setData(Uri.parse("package:"+activity.getPackageName()));
startActivity(intent);
}
}
之后就会弹出一个dialog
记得在manifest文件中配置权限:
<uses-permission android:name="android.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS"/>
但在360n4手机上,使用电池优化会导致app直接崩溃,原因是没有应用去处理这个intent,应该是360手机阉割了电池优化。
有可能任何应用程序都无法处理发给 startActivity() 的隐式 Intent 。 如果是这样,调用将会失败,应用程序就会崩溃。 为了判断是否存在可接收 Intent 的 Activity ,请调用 Intent 对象的 resolveActivity() 方法。 如果结果为非空,则表示至少有一个应用程序可以处理该 Intent , startActivity() 的调用就是安全的。 如果结果为 null,就不要使用该 Intent。如果可能的话,请关闭那些提交该 Intent 的功能。
其他电池优化可参考博客:http://blog.csdn.net/ada_dengpan/article/details/51108641