次のコードを使用して、アプリのバッテリー最適化を無視するように要求します。許可を正常にリクエストできます。isIgnoringBatteryOptimizations() を使用して、アプリがシステムのホワイトリストにあるかどうかを検出できます。
<uses-permission android:name="android.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS"/>
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);
「アプリを常にバックグラウンドで実行しますか?」のようなダイアログが表示され、[はい] をクリックします。アプリをシステムのバッテリー最適化ホワイトリストに追加すると仮定しました。
これが私の問題です。ドキュメントには、ユーザーが[Settings] > [Battery] > [Battery Optimization]でリストを手動で構成できることが記載されています。そのため、許可をリクエストして付与すると、システム設定で確認でき、手動で削除できるはずだと期待していました。しかし、何も見えません。リクエストとシステム設定のリストとの間に関係があるとは思えません。
彼らは同じリストを共有していますか? それらが同じでない場合、それらは同等ですか?