How to launch an app using a deeplink in android

Kanwal Prakash Singh picture Kanwal Prakash Singh · Sep 8, 2014 · Viewed 18.5k times · Source

I want to launch app using my own app but not by giving the package name, I want to open a custom URL.

I do this to start an application.

Intent intent = getPackageManager().getLaunchIntentForPackage(packageInfo.packageName);
startActivity(intent);

Instead of package name is it possible to give a deep-link for example:

"mobiledeeplinkingprojectdemo://product/123"

Reference

Answer

Gaurav Singla picture Gaurav Singla · Sep 8, 2014

You need to define a activity that will subscribe to required intent filters:

<activity
            android:name="DeepLinkListener"
            android:exported="true" >

            <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="host"
                    android:pathPattern="some regex"
                    android:scheme="scheme" />
            </intent-filter>
        </activity>

Then in onCreate of your DeepLinkListener activity you can access the host,scheme etc:

protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
Intent deepLinkingIntent= getIntent();
deepLinkingIntent.getScheme();
deepLinkingIntent.getData().getPath();
}

perform check on path and again fire a intent to take the user to corresponding activity. refer data for more help

Now fire a Intent:

Intent intent = new Intent (Intent.ACTION_VIEW);
intent.setData (Uri.parse(DEEP_LINK_URL));