Динамический диплинкинг в Android

Я просматривал документ http://developer.android.com/training/app-indexing/deep-linking.html, чтобы узнать о глубоких ссылках в Android. У меня есть действие в моем приложении для Android под названием WalletActivity, и мне удалось успешно создать для него глубокую ссылку, внеся необходимые изменения в файл AndroidManifest.

Но мой WalletActivity содержит список опций, нажатие на которые приводит меня к другому действию WalletRechargeActivity, содержание которого зависит от соответствующей опции, выбранной из списка опций в WalletActivity. Теперь мне нужна глубокая ссылка, которая может привести меня непосредственно к соответствующему WalletRechargeActivity экрану. Как я могу это сделать?

Например, если example://wallet приводит меня к WalletActivity, я бы хотел, чтобы что-то вроде example://wallet/abcd50 выводило меня на соответствующий экран WalletRechargeActivity с возможностью пополнения счета на 50 долларов. И это значение abcd50 может варьироваться от чего угодно, и не фиксируется заранее, поэтому я не могу добавить его в файл AndroidManifest по отношению к WalletRechargeActivity, верно? Мне нужно обрабатывать это динамически. Итак, вы можете сказать мне, как мне это сделать?


person Sanjiban Bairagya    schedule 02.04.2016    source источник
comment
github.com/airbnb/DeepLinkDispatch позволяет декларативному API на основе аннотаций объявлять глубокие ссылки приложения, проверьте это из.   -  person Morse    schedule 02.04.2016
comment
Просто зарегистрируйте шаблон префикса (wallet/*) и проанализируйте префикс в своем WalletRechargeActivity.   -  person Simon Marquis    schedule 02.04.2016


Ответы (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>
person Simon Marquis    schedule 08.06.2016