2016-06-27 85 views
5

我在一個Android 6測試一個應用程序,我需要通過DOZE,因爲我想要求用戶接受電池優化的igore。打盹模式三星設備

由於項目 AntiDoze,但是當我在我沒有任何問題,一個虛擬設備運行,但是當我通過了三星,我得到:

FATAL EXCEPTION: main 
     Process: com.commonsware.android.antidoze, PID: 21135 
     java.lang.RuntimeException: Unable to start activity ComponentInfo{com.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" /> 
+0

我測試了幾個不同的模擬器(API 23,25和26),我得到了同樣的異常。 – hamalaiv

回答

4

趕上ActivityNotFoundException並顯示自己的UI給用戶,要求他們去設置應用程序並將您的應用程序添加到電池優化白名單。儘管文檔沒有針對此Intent操作專門說明,但大多數Settings.ACTION_*值都提到「在某些情況下,匹配的活動可能不存在,因此請確保您的防範措施不受此影響」。

+0

什麼是最接近的使用意圖,去電池優化?是否有更好的回退,而不只是去操作系統的設置? –

+0

@androiddeveloper:我不知道,對不起。 – CommonsWare

+0

好的謝謝你的回答 –