Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Android Deep Linking issue ! How to use Custom Url scheme myapp://some_data

i have tried link1, link2,link3, link4, link5, link6

Here's everything described about DeepLinking

What i want is the custom uri myapp://some_data, opens the native application installed in the device that requires some_data to initialise the application.

There are 2 scenarios in which the custom url can be clicked.

1) from within the SMS app, when user taps the link it should automatically open the installed otherwise open the googleplay store where the app is hosted

2) from within the body of a email message.

I have tried all the above listed links, but none of them works for me. I m having major problem with the scheme part.

Here's my AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?> 

<uses-sdk     android:minSdkVersion="8"     android:targetSdkVersion="18" />  <application     android:allowBackup="true"     android:icon="@drawable/ic_launcher"     android:label="@string/app_name"     android:theme="@style/AppTheme" >     <activity         android:name="MainActivity"         android:label="@string/app_name"          android:exported="true" >         <intent-filter>             <action android:name="android.intent.action.VIEW" />              <category android:name="android.intent.category.BROWSABLE" />             <category android:name="android.intent.category.DEFAULT" />              <data android:scheme="inderbagga" />         </intent-filter>     </activity> </application> 

and here's the MainActivity.java

TextView tvText=(TextView)findViewById(R.id.tvid);      if (getIntent().getAction() == Intent.ACTION_VIEW&&getIntent().getScheme().equals("inderbagga")) {         Toast.makeText(getApplicationContext(), ""+getIntent().getScheme(), Toast.LENGTH_SHORT).show();         Uri uri = getIntent().getData();         // do stuff with uri         tvText.setText(uri.toString());     }     else tvText.setText("NULL"); 

To be more specific, i want to open the native application when u url of type inderbagga://a1b22c333 is clicked, Either from sms application or gmail/yahoomail email message body.

in order to achieve the same, i 've used intent filters to set the scheme. and getIntent() to read the data that equals to a1b22c333 in the MainActivity.

like image 966
inderbagga Avatar asked Nov 25 '13 12:11

inderbagga


2 Answers

click link means this code will work

          <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="domain.com(google.com)"android:pathPrefix="/wp/poc1/(sufexes)" />      </intent-filter> 

get url data

        //get uri data      Uri data = getIntent().getData();      //get schma      String scheme = data.getScheme(); // "http"      //get server name      String host = data.getHost(); // Ipaddress or domain name     //get parameter      String urltextboxname=data.getQueryParameter("name");      //set value in textview      name.setText(urltextboxname); 
like image 183
prakash Avatar answered Sep 19 '22 11:09

prakash


To be more specific, i want to open the native application when u url of type inderbagga://a1b22c333 is clicked, Either from sms application or gmail/yahoomail email message body.

There are many SMS and email applications available for Android. Precisely none of them know to convert inderbagga://a1b22c333 into clickable entries. You could build a list of all of those apps, contact each of their development teams, and ask them to add it.

Or, you could have your app watch for a particular http:// URL instead. While the user would be presented with a chooser, to view that URL within your app or a Web browser, at least it will be clickable.

like image 26
CommonsWare Avatar answered Sep 18 '22 11:09

CommonsWare