Browser.OpenAsync在Android API 33与32上的行为差异
问题解答
这属于预期行为,根源是Android 13(API 33)对应用间跳转的权限和处理逻辑做了调整:
- Android 12及更低版本:系统会优先匹配已安装的对应应用(比如Twitter)来处理目标URL Scheme,所以会直接唤起Twitter应用打开链接。
- Android 13:新增了
QUERY_ALL_PACKAGES权限的限制,同时对应用链接的处理逻辑更严格。如果你的应用没有声明针对Twitter链接的特定处理权限,系统会默认使用浏览器打开链接,而非直接唤起第三方应用。
另外,BrowserLaunchMode.SystemPreferred的核心逻辑是遵循系统默认的链接处理规则,因此不同Android版本的系统行为差异会直接体现在这个API的执行结果上。如果想在Android 13上也唤起Twitter应用,需要在AndroidManifest.xml中添加对应的<intent-filter>,声明支持Twitter的链接协议;或者申请QUERY_ALL_PACKAGES权限(不推荐,仅在必要场景使用)。
内容的提问来源于stack exchange,提问作者Costas
相关产品推荐
相关产品推荐

