关于华为EMUI4.0忽略电池优化失败的问题
来源:互联网 发布:淘宝买家注册 编辑:程序博客网 时间:2024/05/17 04:05
android6.0引入了doze机制。忽略电池优化就相当于将应用加入了doze白名单。
通过下面的代码,调用系统的dialog,让用户做出选择。
Intent intent = new Intent();intent.setAction(android.provider.Settings.ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS);intent.setData(Uri.parse("package:" + packageName));startActivity(intent);
但是,在华为EMUI4.0(android6.0)的手机上,会报ActivityNotFound异常,之前因为未加异常捕获,导致部分华为手机直接崩溃。导致问题的原因,估计是华为EMUI4.0修改了或者误改了电池优化的ACTION。
我找到了EMUI4.0和EMUI4.0的手机各一台(都是android6.0),发现设置-应用管理-高级-忽略电池优化页面都是有的,但是EMUI4.0无法通过设置action:ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS呼出dialog,也无法通过ACTION_IGNORE_BATTERY_OPTIMIZATION_SETTINGS打开对应设置页面。
对于这种情况,一般解决方法是,通过提示,让用户手动进入设置页面设置。
另外,我还测试了另外一种直接进入忽略电池优化页面的方法,思路是,通过包名打开设置,在通过指定component,进入相应页面,经测试,可行。但是,需要两个参数:1,“设置”的包名;2,忽略电池优化页面的类名。
查找设置的包名和对应页面的类名,有很多方法,我知道两种:1,adb shell dumpsys activity | grep “mFoc”; 2,打开一个页面时,查看logcat,从里面查找。我查到的包名是“com.android.settings”,类名是“com.android.com.settings.Settings@HighPowerApplicationsActivity”
然后,通过下面的代码,成功打开忽略电池优化页面:
Intent intent = new Intent(Intent.ACTION_MAIN); intent.addCategory(Intent.CATEGORY_LAUNCHER); // 设置ComponentName参数1:packagename参数2:Activity路径 ComponentName cn = new ComponentName(packageName, className); intent.setComponent(cn); startActivity(intent);
——————–9月12日补充——————-
昨个突然想到,既然忽略电池优化的dialog是通过Intent呼出的,那么这个dialog应该是一个activity,但外观看起来是dialog。所以今天,找到上面测试的手机,打开忽略电池优化的dialog,通过adb查看发现,果然,就是一个activity。activity全名是:com.android.settings/.fuelgauge.RequestIgnoreBatteryOptimizations。通过设置componentName,应该可以打开,只是,需要忽略的应用的包名, 需要作为参数传递过去,像这样,intent.setData(Uri.parse(“package:” + packageName));因为时间问题,这一步没有验证,有空验证一下。
———-2017/02/21补充———-
阿里巴巴的云os没有忽略电池优化这项设置,同样会遇到这个问题。执行到startActivity方法,会抛出ActivityNotFoundException,可以添加异常捕获,也可以通过代码判断当前是否是阿里云os,跳过异常代码。判断系统是否是云os,参考:http://blog.csdn.net/u010209842/article/details/53743895。
- 关于华为EMUI4.0忽略电池优化失败的问题
- 华为EMUI4.0 基于android 6.0的bug
- 关于华为系列手机 EMUI3.0-EMUI4.0 锁屏控制音乐播放代码 之 添加
- 关于oracle sql优化的一个容易忽略的问题。
- Android中的app忽略电池优化
- 关于笔记本电脑电池无法充电的问题
- 关于替换忽略大小写的问题
- MTK 关于电池等级问题
- 笔记本的电池问题
- 关于delete失败的问题
- 搜索优化中,那些被忽略掉的致命问题!
- 让你的电池多活两年,土豪请自动忽略
- 一些关于电池的资料
- Android关于华为手机的权限问题
- 一个经常被忽略的关于更新异常的问题
- [Android6.0][RK3399] 电池系统(四)不插电池无法开机的问题
- 关于c语言中容易忽略的问题
- 关于配置git忽略文件夹中部分文件的问题
- node Express安装和使用
- 栈和队列的基础算法学习
- bzoj1648(水)
- View类xml属性、方法
- 函数调用
- 关于华为EMUI4.0忽略电池优化失败的问题
- 2 spring整合redis、
- CSS 揭秘(Lea Verou)
- PAT(乙级)1017 打印沙漏(20)
- 设计模式中的单例模式
- STDIN_FILENO的作用及与stdin 的区别
- IaaS、PaaS和SaaS的区别
- 【IOS学习】设置某个界面强制横屏,进入就横屏的几种方法
- Android & iOS – on the edge of Qt and Java/Objective-C