Android中的app忽略电池优化

记录一个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

Android中的app忽略电池优化_第1张图片


记得在manifest文件中配置权限:

但在360n4手机上,使用电池优化会导致app直接崩溃,原因是没有应用去处理这个intent,应该是360手机阉割了电池优化。

有可能任何应用程序都无法处理发给 startActivity() 的隐式 Intent 。 如果是这样,调用将会失败,应用程序就会崩溃。 为了判断是否存在可接收 Intent 的 Activity ,请调用 Intent 对象的 resolveActivity() 方法。 如果结果为非空,则表示至少有一个应用程序可以处理该 Intent , startActivity() 的调用就是安全的。 如果结果为 null,就不要使用该 Intent。如果可能的话,请关闭那些提交该 Intent 的功能。


其他电池优化可参考博客:http://blog.csdn.net/ada_dengpan/article/details/51108641


你可能感兴趣的:(Android)