Deep Link In Android

Before starting with implementation, first we will see what is the deep link.

What is a deep link?

Deep-link is like a URL containing context regarding a particular item; it drives the user to product pages. A deep link is an intent filter system that allows users to directly enter a specific page on the web or activity in an Android app.
In Android, this URL performs three actions as follows :
  1. Open the user’s preferred app that can handle the URI
  2. Open the only available app that can handle the URI
  3. Allow the user to select an app from a dialog
On click of link it will check for preferred app, If preferred app is not present on our phone then it will redirect to user on play store or where we have saved our build of application for download. integration

Import branch SDK to you app level build.gradle file.
dependencies {

    // required for all Android apps

    implementation ''

    // required if your app is in the Google Play Store (tip: avoid using bundled play services libs)

    implementation ''

    implementation ''

    // optional

    // Chrome Tab matching (enables 100% guaranteed matching based on cookies)

    implementation 'androidx.browser:browser:1.0.0'

    // Replace above with the line below if you do not support androidx

    // implementation ''

On the dashboard create your account,use link After the account was created, set up an account for android.
As we see on the dashboard in account settings, we will get branch Key and branch Secret, copy them, and add them into the Android string.xml file we need to add the keys into manifest.xml.




           android:value="true" />



           android:value="key_live_your branch live key" />



           android:value="key_test_your branch test key" />
On dashboard configure your Default settings.
As we see in the above image, we have two options to select I have an Android App and Enable App links; make sure both must be selected.
Add the Android URI Scheme; then, we have to select anyone in between Google Play Search or Custom URI. If your app is on play store, we can add the Url of the play store to your app. Otherwise, choose Custom URL And add the link package name of your app and link of your.apk where you have saved it for the download.

Android URI Scheme: It will be your app name.

Google Play Search: If your app is on play store add the Url.

Custom URL: If the app is not present on play store add the link where you have saved you .apk for the download.

SHA256 Cert Fingerprints: From project gradle we will get signingReport in that we will get SHA256 for our project.

In launcherActivity add the intent-filter in AndroidManifext.xml .
<activity android:name=".SplashActivity">


       <action android:name="android.intent.action.MAIN" />

       <category android:name="android.intent.category.LAUNCHER" />



   <data android:scheme="xyz" android:host="open"></data>

   <action android:name="android.intent.action.VIEW" />

   <category android:name="android.intent.category.DEFAULT" />

   <category android:name="android.intent.category.BROWSABLE" />

   <data android:scheme="https" android:host="url_link"></data>


First scheme is the name which we have registered on the dashboard as an Android scheme URI.

Load Branch

Create one Application class and load branch to your created Application class.

import io.branch.referral.Branch;

public class ApplicationClass extends Application {


    public void onCreate() {


        // Branch logging for debugging


        // Branch object initialization




Initialize Branch

After the loaded branch in the custom Application class, I need to initialize it. Branch initialization must be in your Launcher activity (i.e. Activity that contains intent filter of category, “android.intent.category.LAUNCHER” in AndroidManifext.xml).
import android.content.Intent;

import android.os.Bundle;





import android.util.Log;

import android.view.View;

import android.view.Menu;

import android.view.MenuItem;

import org.json.JSONObject;

import io.branch.indexing.BranchUniversalObject;

import io.branch.referral.Branch;

import io.branch.referral.BranchError;

import io.branch.referral.util.LinkProperties;

public class LauncherActivity extends AppCompatActivity {


    protected void onCreate(Bundle savedInstanceState) {




    @Override public void onStart() {


        Branch.sessionBuilder(this).withCallback(branchReferralInitListener).withData(getIntent() != null ? getIntent().getData() : null).init();



    protected void onNewIntent(Intent intent) {



        // if activity is in foreground (or in backstack but partially visible) launching the same

        // activity will skip onStart, handle this case with reInitSession



    private Branch.BranchReferralInitListener branchReferralInitListener = new Branch.BranchReferralInitListener() {


        public void onInitFinished(JSONObject linkProperties, BranchError error) {




       Gson gson = new Gson();

       JsonParser parser = new JsonParser();

       JsonElement  json =  parser.parse(linkProperties.toString());

       ShareScreenDataModel shareScreenDataModel = gson.fromJson(json, ShareScreenDataModel.class);


Replace ShareScreenDataModel  with your Data Model class and you will get data which is coming through a deep link.
Hope it will be helpful to you!!!

subscribe to our newsletter


About Author

Image from iOS

Priyanka More

Priyanka is an android developer with around 2 and half years of experience developing Android applications with core functionality. She has in-depth knowledge in Java and React Native. Priyanka likes to learn new things and share.
Related Posts

Leave a Comment