android - 如何检查我的应用是否已在 Android 上配置电池优化?
问题描述
我想知道 React Native 中是否有任何方法可以让我们知道用户是否为我们的应用程序选择了“电池优化”?
解决方案
在原生 android 中,您可以使用PowerManager.isIgnoringBatteryOptimizations()
boolean 来确定应用程序是否已经忽略优化,即应用程序是否在白名单上。
@ReactMethod public void isAppIgnoringBatteryOptimization(Callback callback){
String packageName = getReactApplicationContext().getPackageName();
PowerManager pm = (PowerManager) getReactApplicationContext().getSystemService(Context.POWER_SERVICE);
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
callback.invoke(pm.isIgnoringBatteryOptimizations(packageName));
}else{
callback.invoke(true);
}
然后在js中
isAppIgnoringBatteryOptimization: function(callback) {
jobModule.isAppIgnoringBatteryOptimization(ignoringOptimization => {
if (ignoringOptimization != null) {
callback("", ignoringOptimization);
} else {
callback("error", null);
}
});
}
https://github.com/vikeri/react-native-background-job/是一个很好的库,可以看到后台执行的所有边缘情况
如果您想要求用户将其关闭 - 要求
Manifest.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS
允许
从
推荐阅读
- javascript - 如何使用 laravel foreach 循环在地图上显示多个标记?
- javascript - React axios 在 ios 上返回网络错误,但在桌面上没有
- go - 忽略来自渠道的价值
- python - 更改从 Pandas DataFrame 渲染的图像的显示大小
- reactjs - React 应用程序,为应用程序获取路由的 API 调用
- vba - 如何在多个系统中重复使用 Word 宏功能区?
- postgresql - Postgres如何通过夏令时将毫秒转换为日期
- java - Xamarin.Forms:Java.Lang.RuntimeException:无法从包裹中读取输入通道文件描述符
- javascript - 如何在 javascript 中将 python 类 str 转换为字典
- google-chrome - chrome declarativeNetRequest api - 规则集更新