Android Deep Linking with custom URI

As the other answer mentions, the android framework requires you to declare seperate intent-filters for each deep link that you enable in your app. That is the reason you're getting the error.

Also, instead of using adb, you can test deep links directly on android using deep link tester app:

https://play.google.com/store/apps/details?id=com.manoj.dlt

There is no need to mention any package name or component name. Just type the actual deep link and fire.

I've worked with deep links and personally, I found testing through adb to be time-consuming. Hence, I created this app for testing deep links directly and put it up on the play store.


The ADB is sending the intent, it's just that your app must have separate intent-filters when you want multiple link types:

    <activity
        android:name="app.myActivity"
        android:label="@string/app_name"
        android:screenOrientation="portrait">
        <intent-filter>
            <action android:name="android.intent.action.VIEW" />

            <category android:name="android.intent.category.DEFAULT" />
            <category android:name="android.intent.category.BROWSABLE" />
            <!-- Accepts URIs that begin with "example://gizmos”-->
            <data
                android:host="gizmos"
                android:scheme="example" />
        </intent-filter>
        <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:host="www.example.com"
                android:pathPrefix="/gizmos"
                android:scheme="http" />
            <!-- note that the leading "/" is required for pathPrefix-->                
        </intent-filter>
    </activity>

Then the following ADB commands both work:

adb shell am start -W -a android.intent.action.VIEW -d "example://gizmos"
adb shell am start -W -a android.intent.action.VIEW -d "http://www.example.com/gizmos"

However I have encountered problems with more elements appended on to the custom URI (e.g. example://gizmos?data1='hello'&data2='world' - the '&' gets cut off)

And obviously this does not fix the fact that these links are not clickable in other apps, like WhatsApp and Gmail... and yet they are clickable on other platforms.