gpt4 book ai didi

Android 应用程序链接到动态功能显示应用程序选择器对话框显示同一应用程序两次

转载 作者:行者123 更新时间:2023-11-29 02:22:26 25 4
gpt4 key购买 nike

我正在尝试使用 Android 应用程序链接打开一个 Activity 。 Activity 位于动态功能模块中,在 Google's Sample project 中.

我还没有将项目上传到 Google Play,所以我正在使用调试构建类型进行测试,运行配置包括 APK 的所有动态功能。

code我要测试的是:

 private fun openUrl(url: String) { // url will be "http://uabsample-405d6.firebaseapp.com/url"
var intent = Intent(Intent.ACTION_VIEW, Uri.parse(url))
intent.setPackage(packageName)
intent.addCategory(Intent.CATEGORY_BROWSABLE)
startActivity(intent)
}

但是当我尝试导航到 URL 功能时,Android 会显示应用程序选择器对话框,两次显示同一个应用程序:

result

你知道为什么会这样吗?这是有意为之的行为吗?

Android Manifest of Url Module :

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:dist="http://schemas.android.com/apk/distribution"
package="com.android.samples.instantdynamicfeatures">

<dist:module
dist:instant="true"
dist:onDemand="false"
dist:title="@string/title_url_instant_module">
<dist:fusing dist:include="true" />
</dist:module>

<application>
<activity
android:name="com.android.samples.instantdynamicfeatures.UrlInstantModuleActivity"
android:label="@string/title_activity_url_instant_module"
android:theme="@style/AppTheme.NoActionBar">
<intent-filter
android:autoVerify="true"
android:order="1">
<action android:name="android.intent.action.VIEW" />

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

<data
android:host="uabsample-405d6.firebaseapp.com"
android:path="/url"
android:scheme="http" />
<data android:scheme="https" />
</intent-filter>
</activity>
</application>

</manifest>

Strings

<resources>
...
<string name="title_url_instant_module">url</string>
<string name="title_activity_url_instant_module">url_instant_module_activity</string>
</resources>

更新:我忘了说:我用我的更改了示例项目的应用程序 ID,并将众所周知的 Json 放在我的网站上。我使用 App Links Assistant 检查过,没问题。

最佳答案

这似乎是使用 URI Intent 的动态特性中的错误,已报告 here .对于 google 示例 repo,报告了错误 here在这一点上我能给出的唯一可能的解决方案是,暂时我们可以使用反射来完成这项工作。

  private fun openUrl(url: String) {
val intent = Intent(Intent.ACTION_VIEW, Uri.parse(url))
intent.setPackage(BuildConfig.APPLICATION_ID)
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
intent.setClassName(getPackageName(),"com.android.samples.instantdynamicfeatures.UrlInstantModuleActivity")
intent.addCategory(Intent.CATEGORY_BROWSABLE)
startActivity(intent)
}

setClassName函数中使用应用程序包名称 Activity 类名称。然而,这不是官方推荐的方法。有关更多信息,请查看 this .

关于Android 应用程序链接到动态功能显示应用程序选择器对话框显示同一应用程序两次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54537291/

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