Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to launch an app using a deeplink in android

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

like image 851
Kanwal Prakash Singh Avatar asked Sep 08 '14 10:09

Kanwal Prakash Singh


1 Answers

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));
like image 80
Gaurav Singla Avatar answered Oct 03 '22 20:10

Gaurav Singla