Search code examples
androidandroid-intentdeep-linking

Android deep linking works in ADB, but not browser


I am trying to add deep linking to my app. I have added 2 intent filters to one of my activities, one filter for the "http" scheme, and another for my custom scheme (I'm using "example"). I have added one intent filter per scheme, based on the info in this SO (Deep-linking intent does not work), so that I can handle both example://test and http://www.example.com/test type of links.

Here is my XML:

        <activity
    android:name="com.myapp.myapp.SplashActivity"
    android:screenOrientation="portrait"
    android:theme="@android:style/Theme.Holo.Light.NoActionBar.Fullscreen" >
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />

        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
    <intent-filter android:label="Intent Filter label">
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.DEFAULT" />
        <category android:name="android.intent.category.BROWSABLE" />
        <category android:name="android.intent.category.LAUNCHER" />
        <!-- Accepts URIs that begin with "http://www.example.com/test2” -->
        <data android:scheme="http"
              android:host="www.example.com"
              android:pathPrefix="/test2" />

    </intent-filter>
    <intent-filter android:label="Intent Filter label">
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.DEFAULT" />
        <category android:name="android.intent.category.BROWSABLE" />
        <category android:name="android.intent.category.LAUNCHER" />

        <!-- Accepts URIs that begin with "example://test2” -->
        <data android:scheme="example"
              android:host="test2" />
    </intent-filter>
</activity>

They are loading correctly when I test in ADB:

adb shell am start -W -a android.intent.action.MAIN -d "example://test2" com.myapp.myapp

returns

Starting: Intent { act=android.intent.action.MAIN dat=example://test2 pkg=com.myapp.myapp }
Status: ok
Activity: com.myapp.myapp/com.app.myapp.SplashActivity
ThisTime: 357
TotalTime: 357
Complete

However, I get absolutely nothing in a browser. When I try this in a browser: "example://test2" in FF I get "couldn't find an app to open this link" and in Chrome and the Native Browser, it opens up new Google search for "example://test2".

When I try the other style: "http://www.example.com/test2" it just tries to navigate to that web page in all 3 browsers.

I am deploying the app to my phone from Android Studio. I have also tried by generating a debug APK, sending it to my phone, and installing. Same result for both. What am I doing wrong? I've followed the guide (https://developer.android.com/training/app-indexing/deep-linking.html) to the letter as far as I can tell. Does my app need to be in the store for the deep linking to work?


Solution

  • Ughh, my action was MAIN when it should have been VIEW...

    <intent-filter>
            <action android:name="android.intent.action.MAIN" />
    

    ...

    <intent-filter>
            <action android:name="android.intent.action.VIEW" />