我的程序如何在 android studio 中始终在后台保持清醒
how my program stays awake all the time in the background in android studio
我正在开发一个喜欢来电显示的程序。我必须让它一直保持清醒,同时运行后台。
我需要哪些权限或标志?
另外,我如何才能获得关闭我的应用程序的电池优化权限
谢谢
checking/disabling 电池优化使用以下方法
public static boolean isBatteryOptimisationEnabled(Context context) {
if (Build.VERSION.SDK_INT >= 23) {
PowerManager pm = (PowerManager) context.getSystemService(Context.POWER_SERVICE);
return pm != null && !pm.isIgnoringBatteryOptimizations(context.getPackageName());
}
return false;
}
@TargetApi(23)
private static void gotoBatteryOptimisationSettings(Context context) {
Intent intent = new Intent();
String packageName = context.getPackageName();
PowerManager pm = (PowerManager) context.getSystemService(Context.POWER_SERVICE);
if (pm == null || 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);
}
并且为了让您的应用 运行 一直保持您必须在 ForegroundService
中实现您的逻辑
您永远无法让后台服务始终保持活动状态。如果你想确保服务始终保持 运行 你应该使用前台服务。
但是
对于您的具体使用,您应该使用广播接收器来观察用户调用。see this
我正在开发一个喜欢来电显示的程序。我必须让它一直保持清醒,同时运行后台。
我需要哪些权限或标志?
另外,我如何才能获得关闭我的应用程序的电池优化权限
谢谢
checking/disabling 电池优化使用以下方法
public static boolean isBatteryOptimisationEnabled(Context context) {
if (Build.VERSION.SDK_INT >= 23) {
PowerManager pm = (PowerManager) context.getSystemService(Context.POWER_SERVICE);
return pm != null && !pm.isIgnoringBatteryOptimizations(context.getPackageName());
}
return false;
}
@TargetApi(23)
private static void gotoBatteryOptimisationSettings(Context context) {
Intent intent = new Intent();
String packageName = context.getPackageName();
PowerManager pm = (PowerManager) context.getSystemService(Context.POWER_SERVICE);
if (pm == null || 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);
}
并且为了让您的应用 运行 一直保持您必须在 ForegroundService
您永远无法让后台服务始终保持活动状态。如果你想确保服务始终保持 运行 你应该使用前台服务。
但是
对于您的具体使用,您应该使用广播接收器来观察用户调用。see this