1

How to manage the deeplink and applink in one Activity? This is current AndroidManifest.xml setting.

    <activity android:name=".MainActivity" android:launchMode="singleTask">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
        <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:scheme="peterworks" android:host="open"/>
        </intent-filter>
        <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:scheme="https" android:host="peterworks.io"/>
        </intent-filter>
    </activity>
Peterworks
  • 435
  • 4
  • 13

2 Answers2

0

You can try using the following library to make the process easier: https://github.com/airbnb/DeepLinkDispatch

It provides an annotation-based approach to integrate deep links.

Example from its documentation:

@DeepLink("example://example.com/deepLink/{id}")
public class SampleActivity extends Activity {
  @Override protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    Intent intent = getIntent();
    if (intent.getBooleanExtra(DeepLink.IS_DEEP_LINK, false)) {
      Bundle parameters = intent.getExtras();
      String idString = parameters.getString("id");
      // Do something with idString
    }
  }
}
Tashila Pathum
  • 109
  • 2
  • 11
-1

This is sample code that manage your deeplinkActivity with deeplink and Android Applink.

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    // onNewIntent Method will process every deeplink data.
    onNewIntent(MainActivity.this.getIntent());

}

@Override
protected void onNewIntent(Intent intent) {
    super.onNewIntent(intent);

    // setIntent should be called for get new deeplink data. If this is not called, always same deeplink will called
    setIntent(intent);

    // Deeplink data process start
    Uri myDeeplink = intent.getData();

    if (myDeeplink != null){

        if(myDeeplink.getScheme().equals("https")) {
         // Do your things when Android Applink is open your app.

        } else {
         // Do your things when Deeplink is open your app.

        }

    }

}
Peterworks
  • 435
  • 4
  • 13
  • You should not call onNewIntent from your onCreate method. Its different methods for different purposes. Just create method which will check intent for deeplink and call that method in onCreate with getIntent() as parameter and in onNewIntent with the new intent parameter – H.Taras Sep 06 '22 at 17:18