Android Deep Linking with multiple query parameters
AndroidAdbDeep LinkingAndroid Problem Overview
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.
Android Solutions
Solution 1 - Android
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
Solution 2 - Android
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"'
Solution 3 - Android
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 ' '
Solution 4 - Android
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