java白名单怎么做_java-如何在打ze模式下将白名单应用Android 6.0

我认为该帮助器课程应满足您的所有需求。

要使用它来请求操作系统将您的应用列入白名单,您可以使用prepareIntentForWhiteListingOfBatteryOptimization。 如果您得到null,则表示您不需要它,或者您无法使用它。 您可以使用其他功能查询您所处状态的更好状态。

public class PowerSaverHelper {

public enum PowerSaveState {

ON, OFF, ERROR_GETTING_STATE, IRRELEVANT_OLD_ANDROID_API

}

public enum WhiteListedInBatteryOptimizations {

WHITE_LISTED, NOT_WHITE_LISTED, ERROR_GETTING_STATE, UNKNOWN_TOO_OLD_ANDROID_API_FOR_CHECKING, IRRELEVANT_OLD_ANDROID_API

}

public enum DozeState {

NORMAL_INTERACTIVE, DOZE_TURNED_ON_IDLE, NORMAL_NON_INTERACTIVE, ERROR_GETTING_STATE, IRRELEVANT_OLD_ANDROID_API, UNKNOWN_TOO_OLD_ANDROID_API_FOR_CHECKING

}

@NonNull

public static DozeState getDozeState(@NonNull Context context) {

if (VERSION.SDK_INT < VERSION_CODES.LOLLIPOP)

return DozeState.IRRELEVANT_OLD_ANDROID_API;

if (VERSION.SDK_INT < VERSION_CODES.M) {

return DozeState.UNKNOWN_TOO_OLD_ANDROID_API_FOR_CHECKING;

}

final PowerManager pm = (PowerManager) context.getSystemService(Context.POWER_SERVICE);

if (pm == null)

return DozeState.ERROR_GETTING_STATE;

return pm.isDeviceIdleMode() ? DozeState.DOZE_TURNED_ON_IDLE : pm.isInteractive() ? DozeState.NORMAL_INTERACTIVE : DozeState.NORMAL_NON_INTERACTIVE;

}

@NonNull

public static PowerSaveState getPowerSaveState(@NonNull Context context) {

if (VERSION.SDK_INT < VERSION_CODES.LOLLIPOP)

return PowerSaveState.IRRELEVANT_OLD_ANDROID_API;

final PowerManager pm = (PowerManager) context.getSystemService(Context.POWER_SERVICE);

if (pm == null)

return PowerSaveState.ERROR_GETTING_STATE;

return pm.isPowerSaveMode() ? PowerSaveState.ON : PowerSaveState.OFF;

}

@NonNull

public static WhiteListedInBatteryOptimizations getIfAppIsWhiteListedFromBatteryOptimizations(@NonNull Context context, @NonNull String packageName) {

if (VERSION.SDK_INT < VERSION_CODES.LOLLIPOP)

return WhiteListedInBatteryOptimizations.IRRELEVANT_OLD_ANDROID_API;

if (VERSION.SDK_INT < VERSION_CODES.M)

return WhiteListedInBatteryOptimizations.UNKNOWN_TOO_OLD_ANDROID_API_FOR_CHECKING;

final PowerManager pm = (PowerManager) context.getSystemService(Context.POWER_SERVICE);

if (pm == null)

return WhiteListedInBatteryOptimizations.ERROR_GETTING_STATE;

return pm.isIgnoringBatteryOptimizations(packageName) ? WhiteListedInBatteryOptimizations.WHITE_LISTED : WhiteListedInBatteryOptimizations.NOT_WHITE_LISTED;

}

@TargetApi(VERSION_CODES.M)

@RequiresPermission(permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS)

@Nullable

public static Intent prepareIntentForWhiteListingOfBatteryOptimization(@NonNull Context context, @NonNull String packageName, boolean alsoWhenWhiteListed) {

if (VERSION.SDK_INT < VERSION_CODES.LOLLIPOP)

return null;

if (ContextCompat.checkSelfPermission(context, permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS) == PackageManager.PERMISSION_DENIED)

return null;

final WhiteListedInBatteryOptimizations appIsWhiteListedFromPowerSave = getIfAppIsWhiteListedFromBatteryOptimizations(context, packageName);

Intent intent = null;

switch (appIsWhiteListedFromPowerSave) {

case WHITE_LISTED:

if (alsoWhenWhiteListed)

intent = new Intent(Settings.ACTION_IGNORE_BATTERY_OPTIMIZATION_SETTINGS);

break;

case NOT_WHITE_LISTED:

intent = new Intent(Settings.ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS).setData(Uri.parse("package:" + packageName));

break;

case ERROR_GETTING_STATE:

case UNKNOWN_TOO_OLD_ANDROID_API_FOR_CHECKING:

case IRRELEVANT_OLD_ANDROID_API:

default:

break;

}

return intent;

}

/**

* registers a receiver to listen to power-save events. returns true iff succeeded to register the broadcastReceiver.

*/

@TargetApi(VERSION_CODES.M)

public static boolean registerPowerSaveReceiver(@NonNull Context context, @NonNull BroadcastReceiver receiver) {

if (VERSION.SDK_INT < VERSION_CODES.M)

return false;

IntentFilter filter = new IntentFilter();

filter.addAction(PowerManager.ACTION_DEVICE_IDLE_MODE_CHANGED);

context.registerReceiver(receiver, filter);

return true;

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值