【问题标题】:Dynamic deeplinking in AndroidAndroid 中的动态深度链接
【发布时间】:2016-04-02 06:58:17
【问题描述】:

我正在阅读文档 http://developer.android.com/training/app-indexing/deep-linking.html 以了解 Android 中的深度链接。我的 Android 应用中有一个名为 WalletActivity 的活动,我通过在 AndroidManifest 文件中进行必要的更改,成功地为此创建了深层链接。

但是,我的WalletActivity 包含一个选项列表,点击它会将我带到另一个活动WalletRechargeActivity,其内容取决于从WalletActivity 的选项列表中选择的相应选项。现在,我想要一个可以让我直接进入相应的WalletRechargeActivity 屏幕本身的深度链接。我该怎么做?

例如,如果example://wallet 将我引导至WalletActivity,我希望example://wallet/abcd50 将我引导至具有50 美元充值选项的相应WalletRechargeActivity 屏幕。而这个值abcd50 可以从任何东西变化到任何东西,并且不是预先固定的,所以我不能将它添加到WalletRechargeActivityAndroidManifest 文件中,对吧?我需要动态处理它。那么,您能告诉我该怎么做吗?

【问题讨论】:

  • github.com/airbnb/DeepLinkDispatch 允许声明式、基于注释的 API 来声明应用程序深层链接,请查看。
  • 只需注册一个前缀模式 (wallet/*) 并在您的 WalletRechargeActivity 中解析前缀。

标签: android deep-linking deeplink


【解决方案1】:

以下是将用户路由到 WalletActivity 或 WalletRechargeActivity 的示例代码。然后就可以使用getIntent().getData()方法解析url内容了。

<activity android:name=".WalletActivity">
    <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="example" />

        <data android:host="wallet" />
    </intent-filter>
</activity>
<activity android:name=".WalletRechargeActivity">
    <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="example" />

        <data android:host="wallet" />

        <data android:pathPattern="/..*" />
    </intent-filter>
</activity>

【讨论】:

    最近更新 更多