设置特定的应用程序以忽略Android M中的代码优化

Zhe*_*Wei 13 android android-6.0-marshmallow

在新Android M版本中,电池优化功能将在某些条件下停止应用程序以节省电池,但对于VOIP需要始终保持活动的应用程序,此功能会给开发人员带来麻烦.

目前有一种绕过优化的方法,即将app设置为忽略优化,但需要完成太多步骤.

我的问题是,有没有办法跳过忽略特定应用程序的优化页面,我怎么知道我的应用程序是否被排除在优化之外?

blu*_*den 7

警告:Google似乎不允许Play商店中的应用执行此操作.请参阅以下评论.

基于从MPA44I构建中的Settings.apk中提取的AndroidManifest.xml,您似乎可以通过下面的意图执行您想要的操作.

来自XML:

<intent
    android:action="android.settings.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS"
    android:targetPackage="com.android.settings"
    android:data="package:PUT_YOUR_PACKAGE_NAME_HERE" />
Run Code Online (Sandbox Code Playgroud)

来自代码:

try {
    Intent intent = new Intent(android.provider.Settings.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS);
    intent.setData(Uri.parse("package:PUT_YOUR_PACKAGE_NAME_HERE"));
    startActivity(intent);

} catch (ActivityNotFoundException e) {
    e.printStackTrace();
}
Run Code Online (Sandbox Code Playgroud)

请注意,我自己没有时间在实践中验证这一点,但该方法与我在我的某个应用程序中用于启动应用程序特定设置菜单的方法相同.不过,我希望它有所帮助.

  • 请注意这一点 - 我的应用程序刚从Google Play暂停,恕不另行通知请求"REQUEST_IGNORE_BATTERY_OPTIMIZATIONS",即使免除应用程序电池优化对我的应用程序的功能至关重要,我也不能出于技术原因使用GCM. (4认同)
  • 谷歌允许或拒绝它的用例.请查看:https://developer.android.com/training/monitoring-device-state/doze-standby.html#whitelisting-cases (2认同)