当前位置: 首页 > 知识库问答 >
问题:

具有动态特性的即时应用程序总是显示带有1选项的消歧对话框

江智
2023-03-14

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

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

Github项目示例

我创建了一个极简的示例,它与我在GitHub上的当前结构相匹配。需要Android Studio 3.5-RC2

一些背景:

我很有信心,deeplinks的配置是正确的。但是既然你们想检查一下,下面是配置

<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-Assetlinks我的域包含一个可公开访问的Assetlinks.json

3-沙的是正确的,我用的沙的是正确的

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-确认的数字资产链接文件所有检查通过https://digitalassetlinks.googleapis.com/v1/statements:list?source.web.site=https://giddy.entreco.nl&relation=delegate_permission/common.handle_all_urls

5-测试一个URL意图也工作!唯一的问题是我看到了一个简短的消歧对话框。

其他信息

>

  • 我在我的所有模块中都使用apply插件:'com.android.dynamic-feature'(除了app偏离路线)

    Android Studio:3.5RC2;Android-gradle-plugin:3.5.0-rc02

    我的设备是OnePlus6-Oxywood 9.0.7和Android 9

    谷歌官方示例也显示了我的设备上的这种行为

    有什么建议可以让烦人的对话消失吗?当我分析apk/bundle时,我确实看到了特定活动的两个条目。一次在基模块的清单中,但也在配置文件模块的清单中。我对Android/PlayStore如何在安装模块时合并这些清单知之甚少,但我想在这种情况下看到对话框是有意义的。

  • 共有1个答案

    充子航
    2023-03-14

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

    在这个问题得到解决之前,我不建议使用URL意图在模块之间导航,而是使用反射直接到达另一个模块的活动,例如:

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

    其中doesmoduleexist()检查是否:

    >

  • 检查示例清单,您的配置文件模块似乎不是即时应用程序dist:instant=“false”的一部分,因此您永远无法访问它,因此您可以简单地执行isnotinstantapp()检查,而不要尝试作为即时应用程序启动。

    一旦在您安装的应用程序中,那么从技术上来说您不需要检查,因为它总是include=“true”

    但是,如果您的配置文件模块是一个onDemand模块,或者只是为了安全预防,您应该使用splitinstallmanager.getinstalledmodules(),请参见/app-bundle/playcore#manage_installed_modules(注意,您也可以在即时应用程序中使用此API)

    由于这种奇怪的行为看起来在不同的设备之间有所不同,这可能意味着他们在拦截和处理URL意图方面实现了微妙的差异,和/或这只是一个不同的Android版本(pre-O vs O+)。

    另外,如果将多个包名与common.handle_all_urls的单个网站域相关联,当应用程序上线时,系统试图验证关联时,可能会导致一些额外的不当行为。

  •  类似资料:
    • 我目前正在开发适用于Android的即时应用程序,我想使用相机。我在片段中请求相机权限,但没有出现权限请求对话框。 这就是我在片段中请求权限的方式: 现在,我希望显示权限请求对话框,就像应用程序本身(com.android.Application)一样。不幸的是,它没有出现在即时应用程序(com.android.instantapp)中。 此外,我发现 调用,但使用grantResults[0]=

    • 问题内容: 我将要做出一个按钮来采取行动,并将数据保存到数据库中。 用户单击按钮后,我希望JavaScript警报提供“是”和“取消”选项。如果用户选择“是”,则数据将被插入数据库,否则将不执行任何操作。 如何显示这样的对话框? 问题答案: 您可能正在寻找,显示提示并根据用户的决定返回或:

    • 如果有人单击动态链接,我想在选择器应用程序中显示我的应用程序,我的android清单文件应该是什么?URL前缀类似于-https://testapp.page.link. 在这个阶段,如果有人点击链接,它会首先打开浏览器,然后重定向到我的应用程序。但我想在选择器应用程序列表中显示我的应用程序。此时,我的清单文件如下-

    • 有人试用过新的Firebase SDK for Unity吗(https://firebase.google.com/docs/unity/setup)? 当我尝试集成动态链接功能时,当有邀请时,它会使应用程序崩溃。 我创建了一个全新的项目与最低设置(https://firebase.google.com/docs/dynamic-links/unity)为Android添加动态链接到我的项目。当

    • 我想知道是否有什么方法可以使属性值动态。类似于这样: 感谢您的反馈。在我的例子中,属性值是系统特定的,应该在测试运行时生成。

    • 我正在学习Spring boot application,并且有使用xml和java配置的Spring应用程序的经验。 我使用的应用程序具有包含UI、服务和DAO的代码基体系结构。所有这些组件都有单独的上下文文件,即。web-applicationcontext.xml或application-servlet-context.xml、service-context.xml和data-context