android bindService打开失败

在写demo验证SurfaceControlViewHost的时候,bindService提示

Unable to start service Intent U=0: not found

在源代码里搜了下,找到是在如下方法里面里面打印出来的

java 复制代码
// frameworks/base/services/core/java/com/android/server/am/ActiveServices.java
retrieveServiceLocked {
    ....
    if(mAm.getPackageManagerInternal().filterAppAccess(r.packageName,callingUid,
        userId)){
        Slog.w(TAG_SERVICE,"Unable to start service "+service+" U="+userId
        +": not found");
        returnnull;
    }
    ....
}

后面查了下,发现是包可见性的变更引起的异常

Android 11 中的软件包可见性 | Android Developers
Android 上的软件包可见性过滤 | Android Developers

解决方案,在使用的bindService的应用的AndroidManifest.xml里面加上queries,类似如下

java 复制代码
    <queries>
        <package android:name="com.example.host"/>
    </queries>
相关推荐
江上清风山间明月2 小时前
Flutter开发的应用页面非常多时如何高效管理路由
android·flutter·路由·页面管理·routes·ongenerateroute
子非衣6 小时前
MySQL修改JSON格式数据示例
android·mysql·json
openinstall全渠道统计9 小时前
免填邀请码工具:赋能六大核心场景,重构App增长新模型
android·ios·harmonyos
双鱼大猫9 小时前
一句话说透Android里面的ServiceManager的注册服务
android
双鱼大猫9 小时前
一句话说透Android里面的查找服务
android
双鱼大猫9 小时前
一句话说透Android里面的SystemServer进程的作用
android
双鱼大猫9 小时前
一句话说透Android里面的View的绘制流程和实现原理
android
双鱼大猫10 小时前
一句话说透Android里面的Window的内部机制
android
双鱼大猫10 小时前
一句话说透Android里面的为什么要设计Window?
android
双鱼大猫10 小时前
一句话说透Android里面的主线程创建时机,frameworks层面分析
android