Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to confirm whether Android app is launched by DeepLink or normal launch?

I have an application where I need to do different task on different launch types. How to detect that app has been launched by deeplink, when my app was in background.

like image 809
stack Learner Avatar asked Feb 03 '20 11:02

stack Learner


People also ask

What is difference between app link and deep link?

When a user click an URL, it might open a dialog which asks the user to select one of multiple apps handling the given URL. On the other hand, An Android App Link is a deep link based on your website URL that has been verified to belong to your website. When user clicks that URL, it opens your app.

Do all apps have deep links?

Unlike internet URLs and web addresses that are standardized across devices and platforms, deep links aren't universal. To launch your Android app, you'll need a different deep link from one needed to launch your iOS app.

How do I find a deep link for an app?

To access the Deep Link Validator:In Google Ads, click Tools. Find “App Advertising Hub” under “Planning". You'll find the Deep Link Validator on the menu.


1 Answers

Assuming you already have an activity ready with the required intents what you'll to do is check your activity's if(getIntent().getAction() != null) which means it was launched via a deep-link. Normal intents used for navigation will return null.

Now the issue is if your activity was already running in background and you wrote this code in onCreate(), and the deep-linked activity was set to android:launchMode="singleTask" or launched with a FLAG_ACTIVITY_SINGLE_TOP it won't trigger again.

For this you will have to override onNewIntent(Intent intent) method of your activity, this way you can know each time your activity is started from an intent. Again, here you can check if(intent.getAction() != null) and intent.getData() to retrieve the data.

One thing to note is to avoid running the same code twice in onCreate and onNewIntent

In case you haven't implemented deep-linking in your app yet you will first need to make use of <intent-filter> to make an activity be available to handle the intent when clicking on a link etc. as an example

        <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:pathPattern="/.*"
                android:scheme="https" />
        </intent-filter>

You can read more about on the official Docs here as someone already suggested.

like image 68
ljk Avatar answered Sep 24 '22 16:09

ljk