android6.0电池优化,android应⽤申请加⼊电池优化⽩名单⾸先,在 l ⽂件中配置⼀下权限:
1
可以通过以下⽅法,判断我们的应⽤是否在⽩名单中:
1
2
3
4
5
6
7
8
9
@RequiresApi(api = Build.VERSION_CODES.M)
private boolean isIgnoringBatteryOptimizations() {
boolean isIgnoring =false;
PowerManager powerManager = (PowerManager) getSystemService(Context.POWER_SERVICE);
if (powerManager !=null) {
isIgnoring = powerManager.isIgnoringBatteryOptimizations(getPackageName());
}
return isIgnoring;
}
如果不在⽩名单中,可以通过以下代码申请加⼊⽩名单:
01
02
03
04
安卓intent用法05
06
07
08
09
10
@RequiresApi(api = Build.VERSION_CODES.M)
public void requestIgnoreBatteryOptimizations() {
try {
Intent intent =new Intent(Settings.ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS);
intent.setData(Uri.parse("package:" + getPackageName()));
startActivity(intent);
}catch (Exception e) {
e.printStackTrace();
}
}
申请时,应⽤上会出现这样⼀个窗⼝:
可以看到,这个系统弹窗会有影响电池续航的提醒,所以如果想让⽤户点允许,必须要有相关的说明。
如果要判断⽤户是否点击了允许,可以在申请的时候调⽤ startActivityForResult,在 onActivityResult ⾥再判断⼀次是否在⽩名单中。
加⼊后台运⾏⽩名单的多⼚商适配⽅法
7.1基本说明
Android 开发的⼀个难点在于,各⼤⼿机⼚商对原⽣系统进⾏了不同的定制,导致我们需要进⾏不同的适配,后台管理就是⼀个很好的体现。⼏乎各个⼚商都有⾃⼰的后台管理,就算应⽤加⼊了后台运⾏⽩名单,仍然可能会被⼚商⾃⼰的后台管理⼲掉。
如果能把应⽤加⼊⼚商系统的后台管理⽩名单,可以进⼀步降低进程被杀的概率。不同的⼚商在不同的地⽅进⾏设置,⼀般是在各⾃的「⼿机管家」,但更难的是,就算同⼀个⼚商的系统,不同的版本也可能是在不同地⽅设置。
最理想的做法是,我们根据不同⼿机,甚⾄是不同的系统版本,给⽤户呈现⼀个图⽂操作步骤,并且提供⼀个按钮,直接跳转到指定页⾯进⾏设置。但需要对每个⼚商每个版本进⾏适配,⼯作量是⽐较⼤的。我使⽤真机测试了⼤部分主流 Android ⼚商的⼿机后,整理出了部分⼿机的相关资料。
⾸先我们可以定义这样两个⽅法:
01
02
03
04
05
06
07
08
09
10
11
12
13
14
17
/**
* 跳转到指定应⽤的⾸页
*/
private void showActivity(@NonNull String packageName) {
Intent intent = getPackageManager().getLaunchIntentForPackage(packageName);
startActivity(intent);
}
/
**
* 跳转到指定应⽤的指定页⾯
*/
private void showActivity(@NonNull String packageName,@NonNull String activityDir) {
Intent intent =new Intent();
intent.setComponent(new ComponentName(packageName, activityDir));
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
}
以下是部分⼿机的⼚商判断,跳转⽅法及对应设置步骤,跳转⽅法不保证在所有版本上都能成功跳转,都需要加 try catch。
7.2华为
⼚商判断:
1
2
3
4
5
6
7
public boolean isHuawei() {
if (Build.BRAND ==null) {
return false;
}else {
return LowerCase().equals("huawei") || LowerCase().equals("honor");
跳转华为⼿机管家的启动管理页:
1
2
3
4
5
6
7
8
9
private void goHuaweiSetting() {
try {
showActivity("com.huawei.systemmanager",
"com.huawei.systemmanager.startupmgr.ui.StartupNormalAppListActivity"); }catch (Exception e) {
showActivity("com.huawei.systemmanager",
"com.huawei.systemmanager.optimize.bootstart.BootStartActivity");
}
}
操作步骤:应⽤启动管理 -> 关闭应⽤开关 -> 打开允许⾃启动。
7.3⼩⽶
⼚商判断:
1
2
3
public static boolean isXiaomi() {
return Build.BRAND !=null && LowerCase().equals("xiaomi"); }
跳转⼩⽶安全中⼼的⾃启动管理页⾯:
1
2
3
private void goXiaomiSetting() {
showActivity("com.miui.securitycenter",
"com.miui.permcenter.autostart.AutoStartManagementActivity");
}
操作步骤:授权管理 -> ⾃启动管理 -> 允许应⽤⾃启动。
7.4OPPO
⼚商判断:
1
2
3
public static boolean isOPPO() {
return Build.BRAND !=null && LowerCase().equals("oppo"); }
跳转 OPPO ⼿机管家:
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
private void goOPPOSetting() {
try {
showActivity("loros.phonemanager");
}catch (Exception e1) {
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论