Deep linking and multiple app instances

HariRam picture HariRam · Sep 17, 2014 · Viewed 28.7k times · Source

I have implemented deep linking in my app. I added this intent filter in my manifest file, and the deep linking is working.

<intent-filter>
    <action android:name="android.intent.action.VIEW" /> 
    <category android:name="android.intent.category.DEFAULT" /> 
    <category android:name="android.intent.category.BROWSABLE" /> 
    <category android:name="android.intent.category.VIEW" /> 
    <data
        android:host="www.mywebsite.com"
        android:pathPrefix="/something"
        android:scheme="http" />
</intent-filter>

The problem is that through deep linking, my app is launching on top of current app. If I am in Gmail and I click a link, then my app is launching on top of Gmail. I want to launch my app differently.

If my app is already running in background and I click on a link in Gmail which redirects to my app, I will have two instances of my app running at the same time; one in the background, and another on top of Gmail. I want to run only one instance of my app at a time, so it's not also on top of the current app (Gmail). How can I do that?

Answer

Micky picture Micky · Sep 23, 2014

You need to do following things for your Activity in your Manifest.

android:launchMode="singleTask"

This tells the system to always launch the existing instance of the Activity if it is already created.

And you can handle the Intent then by overriding the method

onNewIntent 

See http://developer.android.com/guide/topics/manifest/activity-element.html for more information.