6

I am trying to have my application launch when the user browses to a certain url. I have found a few examples and they all have the same things in the manifests but it's not working for me. I have put the intent-filter under an Activity as well as a Receiver.

Here is my manifest snippet:

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

When under the Activity, I tried using onNewIntent and when it was under a Receiver, I tried using onReceiveIntent, both with a simple Log.i call to see if it fired or not. I am not having much luck.

JonasVautherin
  • 7,297
  • 6
  • 49
  • 95
Arcane Feenix
  • 120
  • 1
  • 8
  • Related question: http://stackoverflow.com/questions/2448213/how-to-implement-my-very-own-uri-schema-on-android – Casebash May 26 '10 at 05:57

1 Answers1

9

I use this in my manifest.xml file:

<activity android:name=".SomeName">
    <intent-filter>
        <category android:name="android.intent.category.ALTERNATIVE" />
        <action android:name="android.intent.action.VIEW" />
        <category android:name="android.intent.category.DEFAULT" />
        <category android:name="android.intent.category.BROWSABLE" />
        <data android:host="google.com" android:scheme="http" />  
    </intent-filter>
</activity>

This will start activity SomeName. I don't use www in the android:host part maybe that will make a difference.

When the activity starts you can get the data that's behind the .com using (for example):

Uri data = getIntent().getData();
if(data != null && data.getPathSegments().size() >= 2){
    List<String> params = data.getPathSegments();
    String somestuff = params.get(0);
}

Edit: If you wan't to be able to check the host from within the activity, use this method:

data.getHost();
Rolf ツ
  • 8,611
  • 6
  • 47
  • 72