Android开发笔记之《Intent学习》

之前已经接触过Intent,现在来深入学习Intent的一些东西

Intent可以用来启动一个Activity,一个Service,还可以用来发起一个广播(Broadcast)

启动方法如下:

组件名称		                 方法名称
Activity		startActivity()    ;    startActivityForResult()
Service			startService    ;    bindService()
Broadcast		sendBroadcast()    ;    sendOrderedBroadcast()    ;    sendStickyBroadcast()

Intent由一下几个部分组成:动作(Action)、数据(Data)、分类(Category)、类型(Type)、组件(Component)、扩展信息(Extra)

Intent寻找目标组件时有两种方法:1.通过组件名称直接制定            2.通过Intent Filter过滤指定


Intent的通过Intent Filter过滤指定

在AndroidManifest.xml中添加指定活动,服务,广播等后,找到相应的xml位置,加入声明action的xml语句即可实现,例如:

<service android:name=".SubService">
        <intent-filter >
            <action android:name="com.example.SubService.MY_ACTION"/>
        </intent-filter>
 </service>
调用的语句如下:

private static final String MY_ACTION = "com.example.SubService.MY_ACTION";  //这里的字符串要和上面xml中的android:name代码的字符串对应
Intent intent = new Intent();
intent.setAction(MY_ACTION);   //设置ACTION为我们自定义的ACTION
startService(intent);

Intent的ComponentName属性

Intent的组件名称对象由ComponentName类来封装,组建名称包含包名称和类名称,被声明在AndroidManifest.xml文件中

组件名称通过setComponent()、setClass()、setClassName()设置,通过getComponent()获得

ConponentName cn = new ComponentName(MainActivity.this,"com.example.MyActivity"); //实例化组件名称
Intent intent = new Intent();  //实例化Intent
intent.setComponent(cn);  //为Intent设置组件名称属性
startActivity(intent);  //启动Activity

Intent的Action属性

Action是指Intent要完成的动作,是一个字符串常量。

Intent类中定义了大量Action常量属性,例如ACTION_CALL(打电话)

我们也可以自己定义Action来使用

通过setAction来设置IntentAction属性,通过getAction来获取Intent的Action属性

下面列出标准的Activity Action常量:

常量名称				常量值					    意义
ACTION_MAIN			android.intent.action.MAIN			应用程序的入口
ACTION_VIEW			android.intent.action.VIEW			显示数据给用户
ACTION_ATTACH_DATA		android.intent.action.ATTACH_DATA		指明附加给其他地方的一些数据
ACTION_EDIT			android.intent.action.EDIT			显示可编辑的数据
ACTION_PICK			android.intent.action.PICK			选择数据
ACTION_CHOOSER			android.intent.action.CHOOSER			显示一个Activity选择器
ACTION_GET_CONTENT		android.intent.action.GET_CONTENT		获得内容
ACTION_DIAL			android.intent.action.DIAL			显示打电话面板
ACTION_CALL			android.intent.action.CALL			直接打电话
ACTION_SEND			android.intent.action.SEND			直接发送信息
ACTION_SENDTO			android.intent.action.SENDTO			选择发信息
ACTION_ANSWER			android.intent.action.ANSWER			应答电话
ACTION_INSERT			android.intent.action.INSERT			插入数据
ACTION_DELETE			android.intent.action.DELETE			删除数据
ACTION_RUN			android.intent.action.RUN			运行数据
ACTION_SYNC			android.intent.action.SYNC			同步数据
ACTION_PICK_ACTIVITY		android.intent.action.PICK_ACTIVITY		选择Activity
ACTION_SEARCH			android.intent.action.SEARCH			搜索
ACTION_WEN_SEARCH		android.intent.action.WEB_SEARCH		Web搜索
ACTION_FACTORY_TEST		android.intent.action.FACTORY_TEST		工厂测试入口点

Intent的Data属性

Intent的Data属性是执行动作的URI和MIME类型,不同的Action有不同的Data数据指定

一些常见的Action和Data的匹配应用如下:

Action属性			Data属性				说明
ACTION_VIEW		content://contacts/people/1		显示_id为1的联系人信息
ACTION_DIAL		content://contacts/people/1		将_id为1的联系人电话号码显示在拨号界面中
ACTION_VIEW		tel:123					显示电话为123的联系人信息
ACTION_VIEW		http://www.baidu.com			在浏览器中浏览该网址
ACTION_VIEW		file://sdcard/music.mp3			播放MP3
ACTION_VIEW		geo:39.3256,116.2312			显示地图

public void onClick(View v)
{
	String data = "http://baidu.com";   
	Intent intent = new Intent();
	intent.setAction(Intent.ACTION_VIEW);   //设置ACTION
	intent.setData(Uri.parse(data));   //为ACTION添加附加数据,数据是一个网址
	startActivity(intent);   //启动浏览网址
}



Intent的Category属性

Intent中的Category属性是一个执行Action的附加信息。

例如,CATEGORY_LAUNCHER意味着加载程序时,Activity出现在最上面。还有CATEGORY_HOME则表示回到Home界面

<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />

Intent intent = new Intent();
intent.setAction(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_HOME);  //添加Category属性使得返回Home界面
startActivity(intent);

Intent的Extra属性

Intent的Extras属性是添加一些组件的附加信息

Intent intent = new Intent();
intent.setClass(MainActivity.this,OtherActivity.class);
intent.putExtra("name","This is a Test");
startActivity(intent);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值