在Android中使用Activity标签下的data标签来描述该Activity可打开的资源类型,根据官方文档的说明其语法如下:
<data android:host="string"
android:mimeType="string"
android:path="string"
android:pathPattern="string"
android:pathPrefix="string"
android:port="string"
android:scheme="string" />
当URI符合scheme://host:port/path的形式或者满足pathPrefix或pathPattern属性的描述时就会启动相应的Activity。
假设有http://mush.com/test/a.html
则应设置
host=“mush.com”
scheme="http"
若
使用path匹配,则需将path设为/test/a.html
使用pathPrefix匹配,则需将pathPrefix设为/test
使用pathPattern匹配,则需将pathParrern设为.*\\html
示例:
新建一个android HelloWorld,修改mainctivity的onCreate方法:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Intent intent = getIntent();
Uri uri = intent.getData();
setContentView(R.layout.activity_main);
this.txt_uri = (TextView) this.findViewById(R.id.txt_uri);
if(uri!=null){
this.txt_uri.setText(uri.toString());
}
}
修改其manifest
<activity
android:name="com.mush.uritest.MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.VIEW" >
</action>
<category android:name="android.intent.category.DEFAULT" >
</category>
<data
android:host="mush.com"
android:pathPrefix="/test"
android:scheme="http" >
</data>
</intent-filter>
</activity>
使用zxing扫面下面的条形码
则会弹出 Chooser Dialog
打开后效果如下:
源码:http://download.youkuaiyun.com/detail/btyh17mxy/5285927
参考:https://developer.android.com/guide/topics/manifest/data-element.html