Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Getting url with Intent Android

Im trying to get the URL that was clicked in order to open the app. Im just having trouble finding where I can get that information. I have a manifest which opens app when clicked. The link would be "http://host.com/file.html?param=1&param2=2" which Im trying to give to the app to handle.

 <intent-filter>
           <data android:scheme="http"
                android:host="host.com" 
                android:pathPrefix="/file.html" />
          <action android:name="android.intent.action.VIEW" />
          <category android:name="android.intent.category.BROWSABLE" />
          <category android:name="android.intent.category.DEFAULT" />
 </intent-filter>

EDIT

@Override
  protected void onCreate(Bundle savedInstanceState) 
  {
        super.onCreate(savedInstanceState);

        Intent intent = getIntent();
        Uri uri = intent.getData();
        try {
            url = new URL(uri.getScheme(), uri.getHost(), uri.getPath());
        } catch (MalformedURLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
}
like image 286
William McCarty Avatar asked Feb 09 '15 22:02

William McCarty


2 Answers

You should be able to get the intent data in your activity with the following:

Uri uri = this.getIntent().getData();
URL url = new URL(uri.getScheme(), uri.getHost(), uri.getPath());
like image 84
Ben Siver Avatar answered Oct 14 '22 01:10

Ben Siver


Basically once you obtain your Uri (that is, getIntent().getData()), you can read your complete url as uri.toString(). Assuming your android:host is valid and set, you can also get actual query data by calling uri.getEncodedQuery().

Here is more details from working sample, if needed:

  1. This is my manifest setup:
            <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:host="boo.acme.com"
                    android:scheme="http" />
            </intent-filter>
  1. This is how I read Uri:
Uri uri = this.getIntent().getData();
  1. Assuming user clicked url "http://boo.acme.com/?ll=43.455095,44.177416", uri.toString() produces "http://boo.acme.com/?ll=43.455095,44.177416" and uri.getEncodedQuery() produces "ll=43.455095,44.177416".

Hope that helps!

like image 21
ror Avatar answered Oct 14 '22 03:10

ror