Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Android deep linking into an app

I am trying to create a link that can be sent via email which when opened on an android device with my app installed will automatically open the correct page in my app.

I have gotten this partially working in a few different ways but have found a few problems that I was wondering if anyone has solutions to.

Attempt 1: Using a custom scheme: myapp://someItem. This works but some email applications do not treat this as a link as it is not http. Is there a way to force applications to treat it as a valid link? gmail for example.

Attempt 2: Using a http link with a host: http://com.myapp/someItem. This works as well but my app ends up registered to handle all http links which is not ideal.

Attempt 3: Using a http link with host and port: http://com.myapp:2345/someItem. This is my current solution with the only drawback being that when the link is opened it still gives the option of opening the link in a browser. Is there a way to stop the browser attempting to open my links?

Does anyone have a way to make links that will be treated as links by all applications and also be ignored by the browser when opening them?

like image 904
skorulis Avatar asked Feb 10 '11 03:02

skorulis


People also ask

Can you deep link into an app?

Deep linking, in simplest terms, is the ability to link directly to content in your app. Instead of simply launching the app and leaving users at the home screen, tapping on a deep link brings users to a specific screen within your app. Think product pages, profiles, new content, or shopping carts.

Can I send a link to an app in Android?

Scroll to the bottom to Store and tap App Details. Now that you're looking at the App Store listing for the app you want to share, tap the three dots in the upper right corner. Tap Share. From here, you can tap a contact or an app to send the URL.

What is Android deep linking?

A deep link is a URL that navigates to a specific destination in your app. When you click a deep link, Android: Opens the user's preferred app that can handle the link, if it's available. If the preferred app isn't available, it opens the only app that can handle the link.


1 Answers

1 - Set Custom URL schemes like http://example.com

For example, the URL http://example.com/?id=95 , will open up the relevant FAQ and the URL http://example.com/?sectionid=8 (where sectionid is the publish id of any Section), will open up relevant section.

2 - Define in your AndroidManifest.xml your DeepLinkActivity (the one that will receive the URL data:

<activity android:name="com.example.shilpi.deeplinkingsample.DeepLinkActivity">
            <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="http" android:host="example.com"/>
             </intent-filter>
        </activity>

3 - Override the onResume() method of your DeepLinkActivity class:

@Override
protected void onResume() {
    super.onResume();

    Intent in = getIntent();
    Uri data = in.getData();
    System.out.println("deeplinkingcallback   :- "+data);
}
like image 178
Ashutosh Srivastava Avatar answered Oct 18 '22 13:10

Ashutosh Srivastava