2017-01-11 8 views
0

私は、場所の近くにいる場合、ユーザーに警告する必要があるアプリを開発しています。 もちろん、電話機がアイドル状態にある場合でもそれを実行する必要があります。 DOZEで は、今私は私のアプリをホワイトリストに登録して、私はよく、これはあまりにも簡単なはずthis postAndroid M startActivityバッテリーの最適化

Intent intent = new Intent(); 
String packageName = context.getPackageName(); 
PowerManager pm = (PowerManager) context.getSystemService(Context.POWER_SERVICE); 
if (pm.isIgnoringBatteryOptimizations(packageName)) 
    intent.setAction(Settings.ACTION_IGNORE_BATTERY_OPTIMIZATION_SETTINGS); 
else { 
    intent.setAction(Settings.ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS); 
    intent.setData(Uri.parse("package:" + packageName)); 
} 
context.startActivity(intent); 

にバディの答えにアクション要求のおかげで意図を始めることができることを見たことをしなければならないことを理解しました。 .. googleはこのアプローチが好きではないので、あなたがアプリをプレイストアから禁止する必要があります...コメントはありません... あなたは電池の設定と手動でユーザーを運転する必要がありますDOZEのホワイトリストにあなたのアプリを追加してください...はい、これは大きな壁でなければなりません...とにかく唯一の方法だと思われます...今、答えは です。要約、このように(thank you Chris):

Intent powerUsageIntent = new Intent(Intent.ACTION_POWER_USAGE_SUMMARY); 
    ResolveInfo resolveInfo = getPackageManager().resolveActivity(powerUsageIntent, 0); 
// check that the Battery app exists on this device 
    if(resolveInfo != null){ 
     startActivity(powerUsageIntent); 
    } 

しかし、どのように直接バッテリーの最適化を選択するためのアプリのリストに行くのですか?

ありがとうございました。 Google Playにそれを公開しても大丈夫でなければなりませんので、それがために(、<uses-permission android:name="android.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS"/>許可を持っている必要はありません

private void openPowerSettings(Context context) { 
    Intent intent = new Intent(); 
    intent.setAction(Settings.ACTION_IGNORE_BATTERY_OPTIMIZATION_SETTINGS); 
    context.startActivity(intent); 
} 

:バッテリーの最適化を選択するためのアプリケーションのリストを開くには

+0

あなたが必要としているのは、Settings.ACTION_IGNORE_BATTERY_OPTIMIZATION_SETTINGSのアクションです。 – Grimmy

+0

こんにちはGrimmy、私はこのアプローチが嫌いと​​Googleに書きましたが、あなたのアプリはプレイストアからの禁止が必要です。 ..このトレッドを読む: http://stackoverflow.com/questions/33114063/how-do-i-properly-fire-action-request-ignore-battery-optimizations-intent – Ast

+0

そのスレッドによると、Googleはあなたのアプリを禁止することができますもしそれがandroid.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONSパーミッションを要求するならば。しかし、Settings.ACTION_IGNORE_BATTERY_OPTIMIZATION_SETTINGSアクションには必要ありません。バッテリー最適化を選択するアプリのリストが表示されます – Grimmy

答えて

1

あなたは、このサンプルコードを使用することができます詳細はthisスレッドとこの質問へのコメントをチェックしてください)。

+0

致命的な例外:android.content.ActivityNotFoundException {int =パッケージ:io.demo.example} –

+0

私も同じ例外が発生しています。今までの解決策は? – PKTomar

関連する問題