【问题标题】:Android deep links opens in the app I linked from instead of launching a separate instance of my appAndroid 深层链接在我链接的应用程序中打开,而不是启动我的应用程序的单独实例
【发布时间】:2020-01-05 05:52:56
【问题描述】:

我正在使用 react-native。深度链接非常适合 ios。然而,对于 Android,我似乎无法弄清楚如何从深层链接正确打开我的应用程序。

从例如打开深层链接时Firefox,我的应用程序在 Firefox 窗口内启动。当我使用深度链接测试器应用程序时也是如此。除了不是从正确的应用程序启动之外,该应用程序的一切都按预期工作。

我做错了什么?这是我的 AndroidManifest.xml 的摘录:

    <activity 
         android:name=".MainActivity"
         android:label="@string/app_name"
         android:configChanges=
             "keyboard|keyboardHidden|orientation|screenSize" 
         android:windowSoftInputMode="adjustResize"  
         android:exported="true">
      <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:scheme="myapp" />
      </intent-filter>
    </activity>

【问题讨论】:

    标签: android react-native deep-linking


    【解决方案1】:

    看看https://developer.android.com/guide/components/activities/tasks-and-back-stack

    在清单文件中声明活动时,您可以使用元素的 launchMode 属性指定活动应如何与任务关联。

    launchMode 属性指定如何将活动启动到任务中的指令。您可以将四种不同的启动模式分配给 launchMode 属性:

    尝试将android:launchMode="singleTask" 放在您的活动标签上

    系统创建一个新任务并在新任务的根目录下实例化活动。但是,如果活动的实例已经存在于单独的任务中,系统会通过调用其 onNewIntent() 方法将意图路由到现有实例,而不是创建新实例。一次只能存在一个 Activity 实例。

    https://developer.android.com/guide/components/activities/tasks-and-back-stack#ManifestForTasks

    进一步的背景阅读包括(以及您可以尝试的许多其他事情):

    FLAG_ACTIVITY_NEW_TASK clarification needed

    Android Task Affinity Explanation

    【讨论】:

    • 哦,太好了,非常感谢。我之前偶然发现了这个,但不小心把它放在了我的 MainApplication-tag 中,而不是我的 MainActivity 中......我想我需要提高我的阅读技巧!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多