您的位置:首页 > 移动开发 > Android开发

Android中Intent的匹配规则和注意事项

2014-06-01 12:17 211 查看
Android中Intent的匹配规则和注意事项

没有设置数据的情况下,只要Intent中的action和category都出现在Intent-filter中,就能与之匹配,否则匹配失败。

注意事项:

①创建Intent对象,系统会默认给当前的对象添加一个category,即:<category android:name="android.intent.category.DEFAULT"/>所以,intent-filter中需要配置。

②Intent的setType()方法会自动的清除掉Intent中先前设置的数据,所以,既需要设置的Data,又需要设置Type时,使用setDataAndType()即可。

测试代码如下:

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

public class IntentActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}

public void click(View view){
Intent intent = new Intent("cn.itcast.zhangxx");
intent.addCategory("cn.itcast.category.java");
intent.setDataAndType(Uri.parse("itcast://www.itcast.cn/liming"), "iamge/jpeg");
startActivity(intent);
}
}


<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="cn.itcast.intent"
android:versionCode="1"
android:versionName="1.0" >

<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="17" />

<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity android:name="cn.itcast.intent.IntentActivity">
<intent-filter >
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
<activity android:name="cn.itcast.intent.OtherActivity">
<intent-filter >
<action android:name="cn.itcast.zhangxx"/>
<category android:name="cn.itcast.category.java"/>
<category android:name="android.intent.category.DEFAULT"/>
<data android:mimeType="iamge/*" android:scheme="itcast" android:host="www.itcast.cn"/>
</intent-filter>
</activity>
</application>

</manifest>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: