参考网址:https://blog.csdn.net/xiaoerbuyu1233/article/details/122130165

在 AndroidManifest.xml 文件中配置一下权限

<uses-permission android:name="android.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS" />

加入白名单工具类

package com.utils;import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.net.Uri;
import android.os.Build;
import android.os.PowerManager;
import android.provider.Settings;
import android.support.annotation.RequiresApi;public class AlwaysLive {final static String  IS_HUAWEI = "isHuawei"; //华为final static String  IS_XIAOMI = "isXiaomi"; //小米final static String  IS_OPPO = "isOppo";  //oppofinal static String  IS_VIVO = "isVivo"; //vivofinal static String  IS_MEIZU = "isMeizu"; //魅族final static String  IS_SAMSUNG = "isSamsung"; //三星final static String  IS_LETV = "isLetv"; //乐视final static String  IS_SMARTISAN = "isSmartisan"; //锤子//判断应用是否添加在白名单之中@RequiresApi(Build.VERSION_CODES.M)public static boolean isIgnoringBatteryOptimizations(Context context){boolean isIgnoring = false;PowerManager powerManager = (PowerManager) context.getSystemService(Context.POWER_SERVICE);if (powerManager != null)isIgnoring = powerManager.isIgnoringBatteryOptimizations(context.getPackageName());return isIgnoring;}//如果不存在则申请加入白名单,使用弹框引导用户public static void requestIgnoreBatteryOptimizations(Context context){try {Intent intent = new Intent(Settings.ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS);intent.setData(Uri.parse("package:" + context.getPackageName()));context.startActivity(intent);}catch (Exception e){e.printStackTrace();}}/*** 跳转到指定应用的首页*/public static void showActivity(String packageName,Context context){Intent intent = context.getPackageManager().getLaunchIntentForPackage(packageName);context.startActivity(intent);}/***  跳转到指定应用的指定页面* */public static void showActivity(String packageName,String activityDir,Context context){Intent intent = new Intent();intent.setComponent(new ComponentName(packageName, activityDir));intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);context.startActivity(intent);}//判断手机厂商public static String checkPhoneFirm(){String phoneState = Build.BRAND.toLowerCase(); //获取手机厂商if (phoneState.equals("huawei") || phoneState.equals("honor"))return IS_HUAWEI;else if (phoneState.equals("xiaomi") && Build.BRAND != null)return IS_XIAOMI;else if (phoneState.equals("oppo") && Build.BRAND != null)return IS_OPPO;else if (phoneState.equals("vivo") && Build.BRAND != null)return IS_VIVO;else if (phoneState.equals("meizu") && Build.BRAND != null)return IS_MEIZU;else if (phoneState.equals("samsung") && Build.BRAND != null)return IS_SAMSUNG;else if (phoneState.equals("letv") && Build.BRAND != null)return IS_LETV;else if (phoneState.equals("smartisan") && Build.BRAND != null)return IS_SMARTISAN;return "";}//前往设置管理public static void  gotoWhiteListSetting(Context context){if (checkPhoneFirm().equals(IS_HUAWEI)){try {showActivity("com.huawei.systemmanager","com.huawei.systemmanager.startupmgr.ui.StartupNormalAppListActivity",context);}catch (Exception e){showActivity("com.huawei.systemmanager","com.huawei.systemmanager.optimize.bootstart.BootStartActivity",context);}}else if (checkPhoneFirm().equals(IS_XIAOMI)){showActivity("com.miui.securitycenter","com.miui.permcenter.autostart.AutoStartManagementActivity",context);}else if (checkPhoneFirm().equals(IS_OPPO)){//oppo:操作步骤:权限隐私 -> 自启动管理 -> 允许应用自启动try {showActivity("com.coloros.phonemanager",context);} catch (Exception e) {try {showActivity("com.oppo.safe",context);} catch (Exception e2) {try {showActivity("com.coloros.oppoguardelf", context);} catch (Exception e3) {showActivity("com.coloros.safecenter", context);}}}}else if (checkPhoneFirm().equals(IS_VIVO)){//vivo:操作步骤:权限管理 -> 自启动 -> 允许应用自启动showActivity("com.iqoo.secure", context);}else if (checkPhoneFirm().equals(IS_MEIZU)){//魅族:操作步骤:权限管理 -> 后台管理 -> 点击应用 -> 允许后台运行showActivity("com.meizu.safe", context);}else if (checkPhoneFirm().equals(IS_SAMSUNG)){//三星:操作步骤:自动运行应用程序 -> 打开应用开关 -> 电池管理 -> 未监视的应用程序 -> 添加应用try {showActivity("com.samsung.android.sm_cn",context);} catch (Exception e) {showActivity("com.samsung.android.sm",context);}}else if (checkPhoneFirm().equals(IS_LETV)){//乐视:操作步骤:自启动管理 -> 允许应用自启动showActivity("com.letv.android.letvsafe","com.letv.android.letvsafe.AutobootManageActivity", context);}else if (checkPhoneFirm().equals(IS_SMARTISAN)){//锤子:操作步骤:权限管理 -> 自启动权限管理 -> 点击应用 -> 允许被系统启动showActivity("com.smartisanos.security", context );}}}

使用

if (!AlwaysLive.isIgnoringBatteryOptimizations(this)){AlwaysLive.requestIgnoreBatteryOptimizations(this);}

使用2:通过测试发现以下方法不能使用,会出现崩溃现象

if (!AlwaysLive.isIgnoringBatteryOptimizations(this))AlwaysLive.gotoWhiteListSetting(this);

Android中添加APP到白名单相关推荐

  1. android 添加安装权限白名单

    点击打开链接 有些项目不允许所有APK都拥有安装权限,例如apk只能通过应用商城来安装或者升级,只允许某些特定的apk自升级,不允许pm install等.这就需要添加安装权限白名单来控制. 1.pa ...

  2. Android之monkey Test,Monkey测试中的黑名单和白名单,Monkey测试中的黑名单和白名单

    一.Monkey简介 Monkey是Android中的一个命令行工具,可以运行在模拟器里或实际设备中.它向系统发送伪随机的用户事件流(如按键输入.触摸屏输入.手势输入等),实现对正在开发的应用程序进行 ...

  3. Android通过adb添加电池用户白名单

    背景: Android6.0针对低电耗模式和应用待机模式进行优化: 应用白名单操作 # 开启LightDoze功能 adb shell dumpsys deviceidle enable light ...

  4. Android PhoneGap源码分析——白名单

    对于单独的Web app应用来说,加载进来的url一般不能保证它的安全性.那么如何来处理url安全性的问题呢. 让我们来看看PhoneGap是如何做的. PhoneGap采用了白名单的形式,认为在白名 ...

  5. [Android]PhoneGap源码分析——白名单

    对于单独的Web app应用来说,加载进来的url一般不能保证它的安全性.那么如何来处理url安全性的问题呢. 让我们来看看PhoneGap是如何做的. PhoneGap采用了白名单的形式,认为在白名 ...

  6. android 11.0app应用卸载白名单

    1.概述 在11.0定制化开发中,客户需求要实现应用卸载白名单功能,用来管理第三方app卸载功能,需要在白名单之中的应用可以卸载,其他的app不准卸载,实现一个管理第三方app卸载的功能,这需要从ap ...

  7. Asp.Net Core 中如何设置 IP 白名单

    咨询区 MartinM: 我想在一个web站点中实现ip白名单功能,在 MVC 时代我只需要在 web.config 中添加如下配置即可. <security><ipSecurity ...

  8. Android 中如何计算 App 的启动时间?

    (转载) 已知的两种方法貌似可以获取,但是感觉结果不准确:一种是,adb shell am start -w packagename/activity,这个可以得到两个值,ThisTime和Total ...

  9. Android 系统优化(35)---Android 中如何计算 App 的启动时间?

    Android 中如何计算 App 的启动时间? 1 应用启动场景 事实上 Android 中一个 App 的启动时间可以准确计算的.但是要分场景.也就是说要分开游戏和应用. 大家都知道,在Andro ...

最新文章

  1. logrus学习笔记
  2. python3 进程
  3. Node.js 使用axios读写influxDB
  4. DB2 9 使用开辟(733 检验)认证指南,第 2 部分: DB2 数据操作(1)
  5. 成为诺奖热门人选,培养三名院士,他25岁才读研一!
  6. 深入解读 Knative Eventing 0.7 版本新特性
  7. 删除CentOS系统自带的jdk
  8. 推送MobPush-API说明
  9. python批量检索文献_导师每天都让查文献,如何才能快速查找文献呢?
  10. 软件测试入门知识了解
  11. 黑客站在 ATM 面前,机器就直接吐出钞票,他们是怎么做到的?
  12. canvas圆形、半圆形进度条
  13. 讯飞翻译机抢镜背后,跨语种沟通迈入全新时代
  14. 论文笔记:ALA loss:Adaptive Logit Adjustment Loss for Long-Tailed Visual Recognition
  15. 三问中国电子云,此时入局的深意是什么?
  16. 网站哪些功能可以提高用户体验度?
  17. 微信小程序实现点赞与取消点赞功能
  18. 老慜的A5作业——p5.js 动态、周期、随机、面向对象
  19. 根据class属性获取元素
  20. win7 svn客户端 不显示绿色小队号等问题

热门文章

  1. uniapp相册选择页国际化问题
  2. 如何用Java画一个小乌龟
  3. PDF可以直接标注吗?分享两种方法
  4. 重大政策:国有股转持政策
  5. 什么是知识体系?如何搭建层次和结构化思维?
  6. MySQL数据库闭包 Closure Table 表实现
  7. java 向上、向下取整,四舍五入
  8. switch java 用法_switch 用法解读
  9. 基于C#的RFID读写器上位机
  10. 图像处理21-计算轮廓周长或曲线长度