Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Android Deep Linking with multiple query parameters

I'm trying to deep link my app and have implemented the following in my AndroidManifest.xml to open the proper activity.

<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>

And I'm testing the activity from adb using

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

The Activity is opening but the URI which is passed to the activity in the intent is only

myCustomScheme://myHost?key=category_parent_id

Its skipping everything after '&'

I did look up here on SO but didn't find anything with multiple query parameters.

like image 720
Varun Ramani Avatar asked Feb 26 '16 06:02

Varun Ramani


4 Answers

Just add \ before & sign when testing with adb.

Copy this:

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

like image 117
Khizar Hayat Avatar answered Nov 19 '22 20:11

Khizar Hayat


You can wrap the shell command with simple quotes (to avoid modifying the uri content):

adb shell 'am start -d "myCustomScheme://myHost?key=category_parent_id&value=92&title=test"'
like image 23
Simon Marquis Avatar answered Nov 19 '22 19:11

Simon Marquis


For osx / mac users with android studio

Load adb

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

Check that the app is recognized

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

Test 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'

Don't forget the ' '

like image 3
Tomás Mehdi Avatar answered Nov 19 '22 21:11

Tomás Mehdi


Just encode your url parameters and it will work. It might be google's parsing bug.

Before:

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

After:

adb shell am start -W -a android.intent.action.VIEW -d "myCustomScheme://myHost?key%3Dcategory_parent_id%26value%3D92%26title%3Dtest" com.myApp.android
like image 1
Yueh-Ming Chien Avatar answered Nov 19 '22 21:11

Yueh-Ming Chien