影响范围:targetSDKVersion为Android R的应用。
可能带来的影响
目前验证以下行为会受到影响
1.通过PackageManager判断应用是否安装
queryIntentActivities,获取其它应用的ApplicationInfo,PackageInfo等
2.显式启动其它应用的Activity时,会报ActivityNotFoundException的异常
3.startSerVice() 无法启动其它应用的服务
不受影响的行为(Developer 网站)
目标应用是您自己的应用。
您可以使用隐式 intent 启动 Activity。您的应用可能会限制其使用隐式 intent 与其他应用交互的方式。
您的应用与实现 Android 核心功能的某些系统软件包(如媒体提供程序)交互。
其他应用期望从您的应用获得结果。当您的应用是内容提供程序时、当其他应用通过调用 startActivityForResult() 调用您的应用时,以及当您的应用是其他应用尝试启动或连接到的服务时,会出现这种情况。
最简单的适配方式:
1.在Manifest中添加QUERY_ALL_PACKAGES权限,此为普通权限,不需要弹框同意
<uses-permission android:name="android.permission.QUERY_ALL_PACKAGES" />
2.查询特定的包名
<manifest package="com.example.game">
<queries>
<package android:name="com.example.store" />
<package android:name="com.example.services" />
</queries>
...
</manifest>
3.应用需要查询一组具有特定用途的应用或与之交互,但您可能不知道要添加的具体软件包名称。
<manifest package="com.example.game">
<queries>
<intent>
<action android:name="android.intent.action.SEND" />
<data android:mimeType="image/jpeg" />
</intent>
</queries>
...
</manifest>