<manifest package="com.example.game"><queries><!-- 声明所要进行交互的应用名 --><package android:name="com.example.store" /><package android:name="com.example.service" /><!--声明要查询的 intents例如下列标签声明了一个自定义的分享视图的 intent--><intent><action android:name="android.intent.action.SEND" /><data android:mimeType="image/jpeg" /></intent></queries>...</manifest>
大部分常见场景
https://developer.android.google.cn/preview/privacy/package-visibility#use-cases-not-affected
其他场景
https://developer.android.google.cn/preview/privacy/package-visibility-use-cases
intent filter 签名
https://developer.android.google.cn/preview/privacy/package-visibility#intent-signature
try {val intent = Intent(ACTION_VIEW, Uri.parse(url)).apply {// 非浏览器应用会直接处理该 URL(默认情况下)// 用户也可以在消除歧义对话框中选择非浏览器应用addCategory(CATEGORY_BROWSABLE)flags = FLAG_ACTIVITY_NEW_TASK or FLAG_ACTIVITY_REQUIRE_NON_BROWSER}startActivity(intent)} catch (e: ActivityNotFoundException) {// 只能使用浏览器应用,或者默认使用浏览器处理该 intent。}
Custom Tab
https://developers.google.cn/web/android/custom-tabs
更好的办法
https://developer.android.google.cn/preview/privacy/package-visibility-use-cases#avoid-a-disambiguation-dialog
FLAG_ACTIVITY_REQUIRE_NON_BROWSER
https://developer.android.google.cn/preview/privacy/package-visibility#web-intent-non-browser-app
Android Studio 和 Gradle 对该功能的支持
Android resource linking failed/Users/sample/AndroidStudioProjects/MyApp/app/build/intermediates/merged_manifests/debug/AndroidManifest.xml:18: error: unexpected element <queries> found in <manifest>
Manifest merger failed with multiple errors, see logs
Error: Missing 'package' key attribute on element package
Merged Manifest 视图
https://developer.android.google.cn/studio/build/manifest-merge#inspect_the_merged_manifest_and_find_conflicts
修复 Android Gradle 插件的问题
buildscript {repositories {google()jcenter()}dependencies {classpath 'com.android.tools.build:gradle:4.0.0'classpath 'com.android.tools.build:gradle:4.0.1'}}
了解更多 Android 11 相关信息,请查阅以下资源:
推荐阅读