【问题标题】:Is it possible to ask for ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS permission in hybrid apps?是否可以在混合应用程序中请求 ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS 权限?
【发布时间】:2018-06-12 06:48:29
【问题描述】:
我想创建一个新的移动应用程序。这个新应用程序将是混合的,需要被列入白名单。如今,我有一个 Android 本机应用程序请求启动 Intent ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS 的权限,让用户可以接受/拒绝请求。
需要该权限,因为即使手机进入打盹/待机模式,我的应用也必须将数据发送到私有服务器。
是否可以使用 ionic 或 react-native 来实现类似的东西(我还没有决定我将使用哪种混合技术,任何建议也很受欢迎)。
谢谢!
【问题讨论】:
标签:
react-native
ionic-framework
hybrid-mobile-app
【解决方案1】:
是的
在 android/app/src/main/AndroidManifest.xml 添加:
<uses-permission android:name="android.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS"/>
在android/app/src/main/java//MainApplication上添加:
import android.os.PowerManager;
import android.net.Uri;
import android.provider.Settings;
然后在 SoLoader.init() 之前的函数 public void onCreate() 上;添加:
Intent myIntent = new Intent();
String packageName = getApplicationContext().getPackageName();
PowerManager pm = (PowerManager) getApplicationContext().getSystemService(Context.POWER_SERVICE);
if (pm.isIgnoringBatteryOptimizations(packageName))
myIntent.setAction(Settings.ACTION_IGNORE_BATTERY_OPTIMIZATION_SETTINGS);
else {
myIntent.setAction(Settings.ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS);
myIntent.setData(Uri.parse("package:" + packageName));
}
getApplicationContext().startActivity(myIntent);