gpt4 book ai didi

android - Firebase 动态链接打开特定 Activity

转载 作者:太空宇宙 更新时间:2023-11-03 13:43:00 25 4
gpt4 key购买 nike

我在我的 iOS 应用程序上实现了 Firebase 动态链接(非常棒!),现在我正在 Android 上做同样的工作。我成功地通过单击动态 URL 启动了我的 Android 应用程序,但我无法在除启动器 Activity 之外的其他 Activity 中打开它。

这是我的 manifest.xml 文件:

    <activity android:name=".Activity.SplashActivity"
android:theme="@style/SplashTheme"
android:screenOrientation="portrait">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>

<activity android:name=".Activity.RouteListActivity"
android:screenOrientation="portrait">
<intent-filter>
<action android:name="android.intent.action.VIEW"/>
<category android:name="android.intent.category.DEFAULT"/>
<category android:name="android.intent.category.BROWSABLE"/>
<data android:host="mywebsite.com" android:scheme="http"/>
<data android:host="mywebsite.com" android:scheme="https"/>
<data
android:host="myapp.app.goo.gl/"
android:scheme="https" />
</intent-filter>
</activity>

当我单击该 URL 时,浏览器会打开并重定向到我的应用程序,但它会按预期在 SplashActivity 而不是 RouteListActivity 上打开。

我错过了什么吗?

谢谢

最佳答案

好吧,我想我找到了一个能够解决这个问题的简单解决方法。

我想起了我开发的一个应用程序,其中的动态链接在以前的版本中运行良好,我只是再次测试它们以确认(here is a sample dynamic link to demonstrate it really works);所以我去了它的 list 以了解我当时做了什么。

基本上,向 Intent 过滤器添加 android:autoVerify=true 很重要,如下所示:

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

它将请求验证应用程序链接,您可以阅读 here为了更好地理解它。

由于此解决方案仅适用于 API 23,我建议将 tools:targetApi="23" 也添加为“this tells the tools that you believe this element (and any children) will be used only on the specified API level or higher”,以避免出现不需要的 Lint 突出显示。

因此,处理此问题的最佳方法是添加以下代码:

<intent-filter
android:autoVerify="true"
tools:targetApi="23">

值得一提的是,根据用户使用链接的方式,用户端的“设置为默认值”选项可能会忽略此选项,因为它可能会出现一个弹出窗口,提供有关如何处理链接的选项,并且可能会以某种方式产生误导(至少考虑到我的应用和设备,这两个选项看起来是一样的)。

在这个问题的示例 list 文件中,它看起来像这样:

<activity android:name=".Activity.SplashActivity"
android:theme="@style/SplashTheme"
android:screenOrientation="portrait">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>

<activity android:name=".Activity.RouteListActivity"
android:screenOrientation="portrait">
<intent-filter
android:autoVerify="true"
tools:targetApi="23">
<action android:name="android.intent.action.VIEW"/>
<category android:name="android.intent.category.DEFAULT"/>
<category android:name="android.intent.category.BROWSABLE"/>
<data android:host="mywebsite.com" android:scheme="http"/>
<data android:host="mywebsite.com" android:scheme="https"/>
<data
android:host="myapp.app.goo.gl/"
android:scheme="https" />
</intent-filter>
</activity>

并且不要忘记在 list 的开头添加 xmlns:tools="http://schemas.android.com/tools"

关于android - Firebase 动态链接打开特定 Activity ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47794125/

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