<intent-filter>
This combination of <action>
and <category>
elements is what tells the Android system that a specific Activity should be launched when the user clicks on a link in another application.
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data ... />
</intent-filter>
<data>
tagsThe set of deep links that your <intent-filter>
supports is the cross-product of all the <data>
elements that you define in that intent-filter. The multiple domain, multiple path, and multiple scheme examples demonstrate this.
<intent-filter>
(developer.android.comAndroidManifest.xml:
<activity android:name="com.example.MainActivity" >
<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="www.example.com" />
</intent-filter>
</activity>
This will accept any link starting with http://www.example.com
as a deep link to start your MainActivity
.
AndroidManifest.xml:
<activity android:name="com.example.MainActivity" >
<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="www.example.com" />
<data android:path="/" />
<data android:path="/about" />
<data android:path="/map" />
</intent-filter>
</activity>
This will launch your MainActivity
when the user clicks any of these links:
http://www.example.com/
http://www.example.com/about
http://www.example.com/map
AndroidManifest.xml:
<activity android:name="com.example.MainActivity" >
<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="www.example.com" />
<data android:scheme="http"
android:host="www.example2.com" />
<data android:path="/" />
<data android:path="/map" />
</intent-filter>
</activity>
This will launch your MainActivity when the user clicks any of these links:
http://www.example.com/
http://www.example2.com/
http://www.example.com/map
http://www.example2.com/map
AndroidManifest.xml:
<activity android:name="com.example.MainActivity" >
<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" />
<data android:scheme="https" />
<data android:host="www.example.com" />
<data android:path="/" />
<data android:path="/map" />
</intent-filter>
</activity>
This will launch your MainActivity when the user clicks any of these links:
http://www.example.com/
https://www.example.com/
http://www.example.com/map
https://www.example.com/map
public class MainActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Intent intent = getIntent();
Uri data = intent.getData();
if (data != null) {
String param1 = data.getQueryParameter("param1");
String param2 = data.getQueryParameter("param2");
}
}
}
If the user clicks on a linkto http://www.example.com/map?param1=FOO¶m2=BAR
, then param1
here will have a value of "FOO"
and param2
will have a value of "BAR"
.
AndroidManifest.xml:
<activity android:name="com.example.MainActivity" >
<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="www.example.com"
android:path="/item" />
</intent-filter>
</activity>
This will launch your MainActivity when the user clicks any link starting with http://www.example.com/item
, such as:
https://www.example.com/item
http://www.example.com/item/1234
https://www.example.com/item/xyz/details
<data> Attribute | Details |
---|---|
scheme | The scheme part of a URI (case-sensitive). Examples: http , https , ftp |
host | The host part of a URI (case-sensitive). Examples: google.com , example.org |
port | The port part of a URI. Examples: 80 , 443 |
path | The path part of a URI. Must begin with / . Examples: / , /about |
pathPrefix | A prefix for the path part of a URI. Examples: /item , /article |
pathPattern | A pattern to match for the path part of a URI. Examples: /item/.* , /article/[0-9]* |
mimeType | A mime type to match. Examples: image/jpeg , audio/* |