Я пытаюсь создать глубокую ссылку на свое приложение и реализовал в своем AndroidManifest.xml следующее, чтобы открыть правильное действие.

<activity
    android:name=".ui.activities.MyActivity"
    android:label="@string/title_activity"
    android:screenOrientation="portrait">
    <!-- ATTENTION: This intent was auto-generated. Follow instructions at
    https://g.co/AppIndexing/AndroidStudio to publish your Android app deep links. -->
    <intent-filter>
        <action android:name="android.intent.action.VIEW" />

        <category android:name="android.intent.category.DEFAULT" />
        <category android:name="android.intent.category.BROWSABLE" />
        <!-- ATTENTION: This data URL was auto-generated. We recommend that you use the HTTP scheme.
        TODO: Change the host or pathPrefix as necessary. -->
        <data
            android:host="myHost"
            android:scheme="myCustomScheme" />
    </intent-filter>
</activity>

А активность от adb тестирую с помощью

adb shell am start -W -a android.intent.action.VIEW -d "myCustomScheme://myHost?key=category_parent_id&value=92&title=test" com.myApp.android

Действие открывается, но URI, который передается действию в намерении, только

myCustomScheme://myHost?key=category_parent_id

Он пропускает все после '&'

Я искал здесь SO, но не нашел ничего с несколькими параметрами запроса.

55
Varun Ramani 26 Фев 2016 в 09:57

4 ответа

Лучший ответ

Просто добавьте \ перед знаком & при тестировании с помощью adb.

Скопируйте это:

adb shell am start -W -a android.intent.action.VIEW -d "myCustomScheme://myHost?key=category_parent_id\&value=92\&title=test" com.myApp.android

141
Vadim Kotov 29 Апр 2019 в 14:27

Вы можете заключить команду оболочки в простые кавычки (чтобы избежать изменения содержимого uri):

adb shell 'am start -d "myCustomScheme://myHost?key=category_parent_id&value=92&title=test"'
22
Simon Marquis 26 Фев 2016 в 09:10

Для пользователей osx / mac с android studio

Загрузите adb

export PATH="/Users/your_user/Library/Android/sdk/platform-tools":$PATH

Убедитесь, что приложение распознано

adb shell am start -n com.package/.activities_package_name.MainActivity

Тестовый deeplink

adb shell 'am start -W -a android.intent.action.VIEW -d "myCustomScheme://myHost?key=category_parent_id\&value=92\&title=test" com.myApp.android'

Не забывайте ''

1
Tomás Mehdi 7 Ноя 2016 в 19:32

Просто закодируйте параметры URL-адреса, и он будет работать. Возможно, это ошибка парсинга Google.

Перед:

adb shell am start -W -a android.intent.action.VIEW -d "myCustomScheme://myHost?key=category_parent_id&value=92&title=test" com.myApp.android

После:

adb shell am start -W -a android.intent.action.VIEW -d "myCustomScheme://myHost?key%3Dcategory_parent_id%26value%3D92%26title%3Dtest" com.myApp.android
0
Yueh-Ming Chien 20 Июн 2016 в 06:44