Android中Intent的Action、Category属性与intent-filter配置

随时随地阅读更多技术实战干货,获取项目源码、学习资料,请关注源代码社区公众号(ydmsq666)、QQ技术交流群(183198395)。

Intent的Action、Category属性都是一个普通的字符串,其中Action代表该Intent所要完成的一个抽象“动作”,而Category则用于为Action增加额外的附加信息。通常Action属性会与Category属性结合使用。

Action要完成的只是一个抽象的动作,这个动作具体由哪个组件(或是Activity或是BroadcastReceiver)来完成,Action这个字符串本身并不管,哪个Activity的<intent-filter>配置中包含了该字符串,该Activity就有可能被启动。一个Intent对象中最多只能包括一个Action属性,但可以包含多个Category属性。

第一个Activity:

package com.lovo.activity;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;

public class MainActivity extends Activity {

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		Button btn = (Button) findViewById(R.id.activity_main_btn);
		btn.setOnClickListener(new OnClickListener() {

			@Override
			public void onClick(View v) {
				Intent intent = new Intent();
				// 设置Action属性
				intent.setAction("com.lovo.intent.action.hello");
				// 添加Category属性
				intent.addCategory("com.lovo.intent.category.hello");
				intent.addCategory("com.lovo.intent.category.welcome");
				startActivity(intent);
			}
		});
	}
}


第二个Activity:

package com.lovo.activity;

import java.util.Set;

import android.app.Activity;
import android.os.Bundle;
import android.widget.EditText;

public class SecondActivity extends Activity {
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.second);
		EditText show = (EditText) findViewById(R.id.second_et1);
		EditText cate = (EditText) findViewById(R.id.second_et2);
		// 获取该Activity对应的Intent的Action属性
		String action = getIntent().getAction();
		// 显示Action属性
		show.setText("Action为:" + action);

		// 获取该Activity对应的Intent的Category属性
		Set<String> cates = getIntent().getCategories();
		// 显示Category属性
		cate.setText("Category属性为:" + cates);
	}
}

目标Action对应的配置代码:

 <activity
            android:name=".SecondActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <!-- 指定该Activity能响应action为指定字符串的Intent -->
                <action android:name="com.lovo.intent.action.hello" />
                <!-- 指定该Activity能响应category为指定字符串的Intent -->
                <category android:name="com.lovo.intent.category.hello" />
                <category android:name="com.lovo.intent.category.welcome" />
                <!-- 指定该Activity能响应category为android.intent.category.DEFAULT的Intent -->
                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
        </activity>



 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

u010142437

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值