2016-06-27 4 views
5

하나의 Android 6에서 DOZE를 전달해야하는 애플리케이션 하나를 테스트 중입니다. 사용자가 배터리 최적화 작업을 수락하도록 요청하고 싶습니다. 프로젝트 AntiDoze에서와 마찬가지로DOZE 모드 삼성 기기

,하지만 난 아무런 문제가없는 가상 장치에서 실행,하지만 난 삼성에 전달할 때 얻을 때

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

배터리 최적화를 위해 가장 가까운 의도는 무엇입니까? OS의 설정으로 이동하는 것보다 더 좋은 대안이 있습니까? –

+0

@androiddeveloper : 잘 모르겠다. 죄송합니다. – CommonsWare

+0

답장을 보내 주셔서 감사합니다. –

관련 문제