我正在开发一个应用程序,如果用户靠近某个地方,它应该提醒用户。
当然,如果手机处于空闲状态,也必须这样做。
现在有了 DOZE,我明白我必须将我的应用程序列入白名单,并且为了做到这一点,我看到我可以通过操作请求启动一个意图,这要归功于 Buddy 在中的回答这个帖子 https://stackoverflow.com/questions/33114063/how-do-i-properly-fire-action-request-ignore-battery-optimizations-intent
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);
好吧,这应该太容易了...因为谷歌不喜欢这种方法,如果你这样做,你的应用程序应该被禁止从游戏商店...没有评论...
好的,所以方法应该是让用户进入电池设置并手动将您的应用程序添加到 DOZE 的白名单中...是的,这应该是一堵需要攀爬的大墙...无论如何似乎是唯一的方法...现在答案是:
我可以使用意图去查看电量使用情况摘要,以这种方式(谢谢克里斯 https://stackoverflow.com/questions/3673036/create-battery-usage-intent-android):
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);
}
但如何直接进入应用程序列表选择电池优化呢?
感谢您的任何答复。
要打开应用程序列表以选择电池优化,您可以使用以下代码示例:
private void openPowerSettings(Context context) {
Intent intent = new Intent();
intent.setAction(Settings.ACTION_IGNORE_BATTERY_OPTIMIZATION_SETTINGS);
context.startActivity(intent);
}
它不需要有<uses-permission android:name="android.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS"/>
权限,所以发布到Google Play应该就可以了(详情请查看this https://stackoverflow.com/questions/33114063/how-do-i-properly-fire-action-request-ignore-battery-optimizations-intent线程和对此问题的评论)。
NOTE
添加这一行
intent.setData(Uri.parse("package:" + mContext.getPackageName()));
将导致崩溃“致命异常:android.content.ActivityNotFoundException 找不到处理 Intent { act=android.settings.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS dat=package:io.demo.example } 的活动”。用户必须在列表中找到该应用程序,似乎无法直接跳转到我们的应用程序。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)