gpt4 book ai didi

android - 具有动态功能的即时应用程序始终显示带有 1 个选项的消歧对话框

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:55:22 26 4
gpt4 key购买 nike

我正在试验动态功能和即时应用程序。为了在各种功能之间导航,我使用深层链接。

每次我导航到另一个 Activity 时,我都会看到不到 1 秒的消歧对话框,其中列出了 1 个应用程序。请注意“Once”和“Always”(荷兰语)的选项是如何变灰的。

示例 Github 项目

我创建了一个 minimalistic sample ,这与我在 Github 上的当前结构相匹配。需要 Android Studio 3.5 - RC2

Disambiguation dialog shown briefly

一些上下文:

我非常有信心,深层链接配置正确。但是既然你们想检查一下,这里是配置:

1 - list :

<activity
android:name=".ProfileActivity">

<intent-filter
android:autoVerify="true"
android:priority="100">

<action android:name="android.intent.action.VIEW" />

<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />

<data
android:host="giddy.entreco.nl"
android:pathPrefix="/profile"
android:scheme="http" />
<data android:scheme="https" />

</intent-filter>

</activity>

2 - Assets 链接我的域包含可公开访问的 assetlinks.json

3 - Sha 是正确的我使用的 sha 是正确的

Executing tasks: [signingReport] in project

SHA1: 3A:52:19:77:C1:AD:18:F4:98:21:77:74:37:DC:9B:89:02:64:6E:C6
SHA-256: 25:DD:C3:7B:8E:35:D3:39:D5:D4:6C:B5:EA:7D:14:AF:82:EC:9C:56:A6:F5:76:A3:E1:D7:69:B3:EC:58:72:E8
Valid until: Saturday, March 21, 2048

4 - 确认数字 Assets 链接文件所有检查通过 https://digitalassetlinks.googleapis.com/v1/statements:list?source.web.site=https://giddy.entreco.nl&relation=delegate_permission/common.handle_all_urls

5 - 测试 URL Intent 也有效!唯一的问题是我会在短时间内看到消歧对话框。

附加信息

  • 我在我的所有模块中使用 apply plugin: 'com.android.dynamic-feature'(当然 app 除外)

    <
  • 安卓工作室:3.5 RC2; Android-gradle-插件:3.5.0-rc02

  • 我的设备是 OnePlus6 - 配备 Oxygen 9.0.7 和 Android 9

  • google official sample还显示 this behaviour on my device

  • 某些三星设备的行为有所不同。它没有显示带有 1 个选项的消歧,而是列出了我的应用程序两次,并且会一直等待,直到您选择 Once 或“Always”。 (注意,我是从 Play 商店的预发布报告中得到的) enter image description here

  • 无论我是构建 APK、App Bundle 还是通过 Google Play 下载,我都会看到这种行为。总是一样的。

有什么建议可以消除烦人的对话吗?当我分析 apk/bundle 时,我确实看到特定Activity 的两个条目。一次在 base 模块的 list 中,也在 profile 模块的 list 中。我不太了解 Android/PlayStore 在安装模块时如何合并这些 list ,但我想在这种情况下看到对话框可能有意义。

最佳答案

所以是的......我相信我以前见过这个,当通过 URL Intent 从一个动态特征(即时)导航到另一个(非即时)时,这是一些奇怪的行为。

在这个问题得到解决之前,我不建议使用 URL Intent 在模块之间导航,而是使用反射直接获取其他模块的 Activity ,示例:

if (doesModuleExist()) {
val intent = Intent()
.setClassName(getPackageName(), "com.sample.ProfileActivity")
.addCategory(Intent.CATEGORY_DEFAULT)
.addCategory(Intent.CATEGORY_BROWSABLE)
startActivity(intent)
}

doesModuleExist() 检查是否:

  1. 检查您的示例 list ,您的配置文件模块似乎不是您的即时应用 dist:instant="false" 的一部分,因此您永远无法访问它,因此您可以简单地进行 isNotInstantApp() 检查,而不是在作为免安装应用时尝试启动。

  2. 一旦进入您安装的应用程序,技术上您就不需要检查,因为它始终是 include="true"

  3. 但是如果您的配置文件模块是一个 onDemand 模块,或者只是为了安全预防措施,您应该使用 splitInstallManager.getInstalledModules(),参见 /app-bundle/playcore#manage_installed_modules (注意,您也可以在您的免安装应用中使用此 API)

而且由于看起来这种奇怪的行为在不同设备之间有所不同,这可能意味着它们在拦截和处理该 URL Intent 方面存在细微差异,和/或它只是不同的 Android 版本(pre-O 与 O+)。

还有,当系统在您的应用上线时尝试验证关联时,将多个包名称关联到 common.handle_all_urls 的单个网站域可能会导致一些额外的错误行为。

关于android - 具有动态功能的即时应用程序始终显示带有 1 个选项的消歧对话框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57340444/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com