【问题标题】:Deeplinking links to launcher/main activity instead of the deeplinked one将链接深度链接到启动器/主要活动,而不是深度链接的链接
【发布时间】:2016-05-16 10:52:44
【问题描述】:

当应用在后台访问深层链接时,正确的PostActivity 会启动并堆叠在调用深层链接的活动之上。这是好的和正确的。

如果点击深度链接时应用未在后台打开,则会打开启动器活动,而不是与深度链接相关的活动。奇怪的是,如果按下返回按钮关闭堆叠的启动器活动并再次点击深度链接,则会启动正确的PostActivity

  • 是否有对此行为的解释?
  • 这是预期的行为吗?
  • 如何始终在点击深度链接时启动深度链接活动而不是启动器活动?

我的启动器活动是:

    <activity
        android:name=".SplashActivity"
        android:configChanges="orientation|keyboardHidden|screenSize"
        android:label="@string/app_name"
        android:screenOrientation="sensorPortrait"
        android:windowSoftInputMode="adjustPan" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

我的深层链接活动是:

    <activity
        android:name=".PostActivity"
        android:label="@string/app_name"
        android:screenOrientation="sensorPortrait"
        android:windowSoftInputMode="adjustResize">
        <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="@string/deeplink_scheme" />
            <data android:host="article" />
            <data android:pathPattern=".*" />
        </intent-filter>
    </activity>

【问题讨论】:

  • 难以置信。 Android 不会自行启动SplashActivity。你确定你在PostActivity 中没有一些代码来检查应用程序是否已初始化,如果没有,则重定向到SplashActivity?请从PostActivity.onCreate()发布代码。
  • 谢谢。我想如果它是“预期的行为”,这可能是我需要的输入,那就是答案。这可能是您的建议,因此我将创建一个新的空白项目来测试“问题”,然后再深入研究现有项目。
  • 我尝试了一个带有简单深度链接和两个活动的新项目,一切正常。我的问题必须是特定于项目的,而不是正常行为。
  • 您找到解决方案了吗?究竟是什么问题? @Wex

标签: android android-activity deep-linking activity-lifecycle


【解决方案1】:

答案是,这不是正常的行为,除了明显的特定于这个项目的东西之外,肯定还有其他东西导致了这种情况的发生。

【讨论】:

    最近更新 更多