Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Android deeplink per flavor

I have multiple deeplink schemes for different app flavors. I have a backend which sends a different scheme per app. If all of them are installed on the same device, all of them will be able to parse the deeplink sent. So when all three are installed and the deeplink for app2 is called. All apps are able to catch it, but only app2 can properly process it in the app and should be the only one able catch it.

Flavors defined in my .gradle file

productFlavors {
    app1{
        applicationId "com.apps.app1"
    }
    app2{
        applicationId "com.apps.app2"
    }
    app3{
        applicationId "com.apps.app3"
    }
}

The intent filter I use to catch the deeplinks in my manifest.

<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:pathPrefix="/"
        android:scheme="app1" />
    <data
        android:pathPrefix="/"
        android:scheme="app2" />
    <data
        android:pathPrefix="/"
        android:scheme="app3" />
</intent-filter>

Is there a way to make a deeplink only catch-able by one flavor?

like image 206
Raymond Avatar asked Mar 23 '17 09:03

Raymond


1 Answers

For people visiting this in 2019: You can use manifestPlaceholders per flavor. In your case:

productFlavors {
  app1{
    applicationId "com.apps.app1"
    manifestPlaceholders.scheme = "app1"
  }
  app2{
    applicationId "com.apps.app2"
    manifestPlaceholders.scheme = "app2"
  }
  app3{
    applicationId "com.apps.app3"
    manifestPlaceholders.scheme = "app3"
  }
}

and then use it in your manifest:

<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:pathPrefix="/"
    android:scheme="${scheme}" />

like image 187
Hibbem Avatar answered Oct 06 '22 00:10

Hibbem