targetSdk 30 (Android 11)使用AIDL无法使用远程服务的问题

今天发现targetSdk 版本为30的时候,在Android11 的机型上,AIDL完全不可用,服务也连接不上,但是在低版本的手机上,或者targetSdk 29时候可以用。怀疑是新版本安全特性
直接查官方文档,发现google增加了软件包可见性的限制:

注意:如果您的应用以 Android 10(API 级别 29)或更低版本为目标平台,那么全部应用均会自动对您的应用可见。
如果您的应用以 Android 11(API 级别 30)或更高版本为目标平台,并且需要与应用(自动可见的应用除外)交互,请在您应用的清单文件中添加 <queries> 元素。在 <queries> 元素中,按软件包名称按 intent 签名按提供程序授权指定其他应用,如以下部分所述。查询特定软件包及与之交互

<manifest package="com.example.game">
    <queries>
        <package android:name="com.example.store" />
        <package android:name="com.example.services" />
    </queries>
    ...
</manifest>

在清单文件添加如上代码问题搞定。。。。
 

上一篇:Android中AIDL的使用


下一篇:NRF51822模块无法识别问题解决办法