现象
在APP上有一个背景音乐播放的功能,按道理讲,只要有音乐在播放,即使把APP放到后台运行,那么就可以一直播放结束。其他手机都能够正常播放结束,可是偏偏在华为手机上,确出现了播放一段时间后音频就停止了,但是,APP并没有退出运行,就只是音频中断了,可是,有可能过一会儿,它又自己开始播放了,类似于网络不好一样。测试环境是在公司,网络造成的原因很小,因为这个问题只在华为上面出现。
解决方法
一、设置启动模式
老手机:设置-》应用管理-》选择某个应用-》电量-》关闭自动启动管理
新手机:设置-》应用-》应用启动管理-》选择某个应用-》关闭自动启动管理
二、使用代码的方式开启电池优化白名单
1、 在配置文件中添加相应的权限
2、 代码调用开启获取优化白名单
三、华为相关问题说明
四、代码
1 2 3 4 5 6 7 8
| { "android": { "permissions": [ "<uses-permission android:name=\"android.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS\"/>" ] } }
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
|
const main = plus.android.runtimeMainActivity(); const packName = main.getPackageName(); const Context = plus.android.importClass("android.content.Context"); const PowerManager = plus.android.importClass("android.os.PowerManager");
const pm = main.getSystemService(Context.POWER_SERVICE); const inWhiteList = pm.isIgnoringBatteryOptimizations(packName); console.log('白名单:', inWhiteList); if (!inWhiteList) { try{ const Uri = plus.android.importClass("android.net.Uri"); const Settings = plus.android.importClass("android.provider.Settings"); const packageURI = Uri.parse("package:" + packName); const intents = plus.android.newObject("android.content.Intent", Settings.ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS, packageURI); main.startActivity(intents); console.log(intents) console.log('执行完毕') }catch{ console.log('调起失败') } }
|