DOZE 模式三星设备

Posted

技术标签:

【中文标题】DOZE 模式三星设备【英文标题】:DOZE mode Samsung device 【发布时间】:2016-10-29 16:54:35 【问题描述】:

我正在一个 android 6 中测试一个应用程序,我需要通过 DOZE,因为我想请求用户接受电池优化的问题。

在项目中 AntiDoze,但是当我在虚拟设备中运行时我没有任何问题,但是当我传递给三星时,我得到:

FATAL EXCEPTION: main
         Process: com.commonsware.android.antidoze, PID: 21135
       java.lang.RuntimeException: Unable to start activity ComponentInfocom.commonsware.android.antidoze/com.commonsware.android.antidoze.EventDemoActivity: android.content.ActivityNotFoundException: No Activity found to handle Intent  act=android.settings.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS dat=package:com.commonsware.android.antidoze 
      at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3253)
      at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3349)
      at android.app.ActivityThread.access$1100(ActivityThread.java:221)

知道如何解决这个问题吗?

链接中重要的代码是:

if (Build.VERSION.SDK_INT>Build.VERSION_CODES.LOLLIPOP_MR1) 
  String pkg=getPackageName();
  PowerManager pm=getSystemService(PowerManager.class);

  if (!pm.isIgnoringBatteryOptimizations(pkg)) 
    Intent i=
      new Intent(Settings.ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS)
        .setData(Uri.parse("package:"+pkg));

    startActivity(i);
  

在我的清单中

 <uses-permission android:name="android.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS" />

【问题讨论】:

我用几个不同的模拟器(API 23、25 和 26)对此进行了测试,我得到了同样的异常。 【参考方案1】:

捕获ActivityNotFoundException 并向用户显示您自己的 UI,要求他们转到“设置”应用并将您的应用添加到电池优化白名单中。虽然文档没有专门针对此 Intent 操作说明这一点,但大多数 Settings.ACTION_* 值都提到“在某些情况下,可能不存在匹配的 Activity,因此请确保您防范这种情况”。

【讨论】:

什么是最接近的意图被使用,去电池优化?是否有比仅仅转到操作系统设置更好的回退方式? @androiddeveloper:我不知道,对不起。

以上是关于DOZE 模式三星设备的主要内容,如果未能解决你的问题,请参考以下文章

三星翻盖手机如何关闭蓝牙

三星 S9(18:9) 相机预览拉长

仅在三星设备中从相机单击时图像会旋转

android中三星设备上的相机捕捉方向

三星手机怎么取消加密设备

三星多窗口崩溃