美文网首页
android8.1 startService报错

android8.1 startService报错

作者: 梧叶已秋声 | 来源:发表于2020-04-17 11:13 被阅读0次

场景1.存在2个appA和BA中的service:S,现需求为S,在A从未打开过的activity界面(即从未启动过)的情况下,需要被B通过调用startService启动。
写法可参考这篇。
Android在一个app中启动其他app中的service或者Activity
场景2.存在1个app:AA中有service:S,现需求为S,在A从未打开过的activity界面(即从未启动过)的情况下,能够开机自启动。
写法可参考这篇。
Android开机自启动服务的写法

但是,以上2种使用场景中在没有打开A的情况下,在调用startService会报错。具体错误如下。
01-07 06:35:03.341 731-753/? W/BroadcastQueue: u0 Receiving a broadcast in package xxx requires a permissions review
需要权限检查,那么就给它权限绕过权限检查。虽然Android O对startService做了限制,但是那只是针对普通进程的,可以通过添加android:sharedUserId="android.uid.system",将app进程升级成系统进程,然后给它签名即可。另外还有一个错误是Waited long enough for: ServiceRecord,添加android:persistent="true"即可。
具体添加节点如下所示。

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="xxx"
    android:sharedUserId="android.uid.system">

    <application
        ..................
        android:persistent="true">
    </application>

</manifest>

参考链接:
Android O 后台startService限制简析
Android 8.0 加入的「Background Service Limitations」
startService过程
Waited long enough for: ServiceRecord 问题解决

相关文章

网友评论

      本文标题:android8.1 startService报错

      本文链接:https://www.haomeiwen.com/subject/qyqevhtx.html