android intent.setData intent.setDataAndType

androidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest
    xmlns:android="http://schemas.android.com/apk/res/android"
    package="org.crazyit.intent"
    android:versionCode="1"
    android:versionName="1.0">
    <uses-sdk
        android:minSdkVersion="10"
        android:targetSdkVersion="15" />
    <application
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name">
        <activity
            android:name=".DataTypeAttr"
            android:label="@string/title_activity_data_type_attr">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity
            android:icon="@drawable/ic_scheme"
            android:name=".SchemeActivity"
            android:label="指定scheme的Activity">
            <intent-filter>
                <action android:name="xx" />
                <category android:name="android.intent.category.DEFAULT" />
                <!-- 只要Intent的Data属性的scheme是lee即可启动该Activity -->
                <data android:scheme="lee" />
            </intent-filter>
        </activity>
        <activity
            android:icon="@drawable/ic_host"
            android:name=".SchemeHostPortActivity"
            android:label="指定scheme、host、port的Activity">
            <intent-filter>
                <action android:name="xx" />
                <category android:name="android.intent.category.DEFAULT" />
                <!-- 只要Intent的Data属性的scheme是lee、且host是www.fkjava.org
                、port是8888即可启动该Activity -->
                <data
                    android:scheme="lee"
                    android:host="www.fkjava.org"
                    android:port="8888" />
            </intent-filter>
        </activity>
        <activity
            android:icon="@drawable/ic_sp"
            android:name=".SchemeHostPathActivity"
            android:label="指定scheme、host、path的Activity">
            <intent-filter>
                <action android:name="xx" />
                <category android:name="android.intent.category.DEFAULT" />
                <!-- 只要Intent的Data属性的scheme是lee、且host是www.fkjava.org
                、path是/mypath即可启动该Activity -->
                <data
                    android:scheme="lee"
                    android:host="www.fkjava.org"
                    android:path="/mypath" />
            </intent-filter>
        </activity>    
        <activity
            android:icon="@drawable/ic_path"
            android:name=".SchemeHostPortPathActivity"
            android:label="指定scheme、host、port、path的Activity">
            <intent-filter>
                <action android:name="xx" />
                <category android:name="android.intent.category.DEFAULT" />
                <!-- 需要Intent的Data属性的scheme是lee、且host是www.fkjava.org
                、port是8888、且path是/mypath才可启动该Activity -->
                <data
                    android:scheme="lee"
                    android:host="www.fkjava.org"
                    android:port="8888"
                    android:path="/mypath"/>
            </intent-filter>
        </activity>
        <activity
            android:icon="@drawable/ic_type"
            android:name=".SchemeHostPortPathTypeActivity"
            android:label="指定scheme、host、port、path、type的Activity">
            <intent-filter>
                <action android:name="xx"/>
                <category android:name="android.intent.category.DEFAULT" />
                <!-- 需要Intent的Data属性的scheme是lee、且host是www.fkjava.org 
                、port是8888、且path是/mypath
                、且type是abc/xyz才可启动该Activity -->
                <data
                    android:scheme="lee"
                    android:host="www.fkjava.org"
                    android:port="8888"
                    android:path="/mypath"
                    android:mimeType="abc/xyz"/>
            </intent-filter>
        </activity>
    </application>
</manifest>

布局文件

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="匹配scheme的Intent"
        android:onClick="scheme"/>
    <Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="匹配scheme、host、port的Intent"
        android:onClick="schemeHostPort"/>
    <Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="匹配scheme、host、path的Intent"
        android:onClick="schemeHostPath"/>    
    <Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="匹配scheme、host、port、path的Intent"
        android:onClick="schemeHostPortPath"/>
    <Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="匹配scheme、host、port、path和type的Intent"
        android:onClick="schemeHostPortPathType"/>            
</LinearLayout>

 

activity

package org.crazyit.intent;

import android.net.Uri;
import android.os.Bundle;
import android.view.View;
import android.app.Activity;
import android.content.Intent;

/**
 * Description:
 * <br/>website: <a href="http://www.crazyit.org">crazyit.org</a>
 * <br/>Copyright (C), 2001-2014, Yeeku.H.Lee
 * <br/>This program is protected by copyright laws.
 * <br/>Program Name:
 * <br/>Date:
 * @author Yeeku.H.Lee [email protected]
 * @version 1.0
 */
public class DataTypeAttr extends Activity
{
    @Override
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
    }
  //intent的Data属性,只有scheme为lee,只有第一个activity满足条件
public void scheme(View source) { Intent intent = new Intent(); // 只设置Intent的Data属性 intent.setData(Uri.parse("lee://www.crazyit.org:1234/test")); startActivity(intent); }
  //intent的Data属性,只有scheme为lee,所以第一个activity满足条件,且该intent的Datahost ,port 与第二个activity相符
public void schemeHostPort(View source) { Intent intent = new Intent(); // 只设置Intent的Data属性 intent.setData(Uri.parse("lee://www.fkjava.org:8888/test")); startActivity(intent);
   }
  //intent的Data属性,只有scheme为lee,所以第一个满足条件,且该intent的Data中host 和path与第三个activity相符
public void schemeHostPath(View source) { Intent intent = new Intent(); // 只设置Intent的Data属性 intent.setData(Uri.parse("lee://www.fkjava.org:1234/mypath")); startActivity(intent); }
  //intent的Data属性,只有scheme为lee,所以第一个满足的条件;intent中Data的host,port与第二个相符,host,path与第三个相符;host,port,path与第四个相符
public void schemeHostPortPath(View source) { Intent intent = new Intent(); // 只设置Intent的Data属性 intent.setData(Uri.parse("lee://www.fkjava.org:8888/mypath")); startActivity(intent); }
  //指定了Data和Type只有第五个相符
public void schemeHostPortPathType(View source) { Intent intent = new Intent(); // 同时设置Intent的Data、Type属性 intent.setDataAndType(Uri.parse("lee://www.fkjava.org:8888/mypath") , "abc/xyz"); startActivity(intent); } }

 

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。