2016-06-27 11 views
5

私はDOZEを渡す必要がある1つのAndroid 6で1つのアプリケーションをテストしています。ユーザーにバッテリ最適化のigoreを受け入れるよう要求したいと思っています。DOZEモードSamsungデバイス

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

バッテリーの最適化に行くのに、最も近いインテントは何ですか?おそらく、OSの設定に行くよりも優れたフォールバックはありますか? –

+0

@androiddeveloper:わかりません、申し訳ありません。 – CommonsWare

+0

お返事ありがとうございます –

関連する問題