今天发现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>
在清单文件添加如上代码问题搞定。。。。