Category、Data、Type属性与intent-filter配置

Intent的Action、Category属性都是一个普通的字符串,其中Action代表Intent所要完成的一个抽象“动作”,而Category则用于为Action增加额外的附加类别信息,通常Action属性与Category属性结合使用。若创建一个Intent时,会默认启动Category属性值为Intent.CATEGORY_DEFAULT常量(android.intent.category.DEFAULT)的组件。

Data属性通常用于向Action属性提供操作的数据,Data属性接受一个Uri对象,一个Uri对象通过如下形式的字符串来表示:

content://com.android.contacts/contacts/1

tel:123

冒号前面指定了数据的类型,后面的是数据部分。

Type属性则用于明确指定Data属性的数据类型或MIME类型,但是通常来说,当Intent不指定Data属性时Type属性才会起作用,否则Android系统将会根据Data属性值来分析数据的类型,所以无需指定Type属性。

一旦为Intent同时指定了Action和Data属性,那么Android将可根据指定的数据类型来启动特定的应用程序,并对指定的数据执行相应的操作。下面是几个Action属性、Data属性的组合:

ACTION_VIEW   content://com.android.contacts/contacts/1:显示标识为1的联系人的信息

ACTION_EDIT   content://com.android.contacts/contacts/1:编辑标识为1的联系人的信息

ACTION_DIAL   content://com.android.contacts/contacts/1:显示向标识为1的联系人拨号的界面

ACTION_DIAL   tel:123  显示向指定号码124拨号的界面

ACTION_VIEW   content://contacts/people:显示所有联系人列表的信息

代码示例:

public class DataAttr extends Activity
{
	@Override
	public void onCreate(Bundle savedInstanceState)
	{
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
		Button bn = (Button)findViewById(R.id.bn);
		//为bn按钮添加一个监听器
		bn.setOnClickListener(new OnClickListener()
		{
			@Override
			public void onClick(View v)
			{
				//创建Intent
				Intent intent = new Intent();
				String data = "http://www.crazyit.org";
				//根据指定字符串解析出Uri对象
				Uri uri = Uri.parse(data);
				//为Intent设置Action属性
				intent.setAction(Intent.ACTION_VIEW);
				//设置Data属性
				intent.setData(uri);
				startActivity(intent);
			}
		});
		
		Button edit = (Button)findViewById(R.id.edit);
		//为edit按钮添加一个监听器
		edit.setOnClickListener(new OnClickListener()
		{
			@Override
			public void onClick(View v)
			{
				//创建Intent
				Intent intent = new Intent();
				//为Intent设置Action属性(动作为:编辑)
				intent.setAction(Intent.ACTION_EDIT);
				String data = "content://com.android.contacts/contacts/1";
				//根据指定字符串解析出Uri对象
				Uri uri = Uri.parse(data);				
				//设置Data属性
				intent.setData(uri);
				startActivity(intent);
			}
		});	
		Button call = (Button)findViewById(R.id.call);
		//为edit按钮添加一个监听器
		call.setOnClickListener(new OnClickListener()
		{
			@Override
			public void onClick(View v)
			{
				//创建Intent
				Intent intent = new Intent();
				//为Intent设置Action属性(动作为:拨号)
				intent.setAction(Intent.ACTION_DIAL);
				String data = "tel:13800138000";
				//根据指定字符串解析出Uri对象
				Uri uri = Uri.parse(data);				
				//设置Data属性
				intent.setData(uri);
				startActivity(intent);
			}
		});			
	}
}


Extra属性通常用于在多个Action之间进行数据交换,Intent的Extra属性值应该是一个Bundle对象,其实就像一个Map对象,可以存入多组key-value对,然后用于数据交换。

 

 

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值