Android笔记之Intent

安卓中Intent(意图)是一种消息机制,活动、服务和广播接收器之间的调用和消息传递都是通过Intent实现的。

意图实现组件之间的通信:

1.启动活动:

  • startActivity()
  • startActivityForResult()

2.启动服务:

  • startService()//启动一个本地服务
  • bindService()//连接一个远程服务

3.发送广播:

  • sendBroadcast()//将广播发送给其他应用

意图的内容:

  • Component(目标组件)://显式意图
  • Action(动作)://隐式意图
  • Data(数据):
  • Category(类别):
  • Extra(附加数据):
  • Flag(标志)://目标组件任务行为

意图类型:

显式意图:

需要提供包名、类名或context上下文对象:

setComponent(ComponentName name)

//Intent 类的方法,提供包名和目标组件类
setClassName(String packageName,String classNameInThatContext)

//Intent 类的方法,context上下文对象和目标组件类
setClassName(Context context,String classNameInThatContext)

//Intent 类的方法,context上下文对象和目标组件类
setClass(Context context,Class classObjectInThatContext)

隐式意图:

应用在应用与不同应用之间,请求需要意图过滤器(Intent Filter)

需要在AndroidManifest.xml中注册:

<activity android:name=".MainActivity">
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
</activity>

隐式意图组件匹配,检查三个信息:Action、Data、Category

Action动作:

  • ACTION_CALL 活动
  • ACTION_EDIT 活动
  • ACTION_MAIN 活动
  • ACTION_VIEW 活动
  • ACTION_SENDTO 活动
  • ACTION_BATTERY_LOW 广播接收器
  • ACTION_HEADSET_PLUG 广播接收器 耳机插入拔出
  • ACTION_SCREEN_ON 广播接收器
  • ACTION_TIMEZONE_CHANGED 广播接收器
//fpt访问本地资源
Intent intent = new Intent();
Intent.setAction(Intent.ACTION_SENDTO);
startActivity(intent)

Data数据:指定数据URI和数据的MIME类型组成

  • URI :scheme /host /port /path
  • MIME :text/html  multipart/form-data  image/png
Intent intent = new Intent();
Uri playUri = Uri.parse(“XXX”);
intent.setDataAndType(playUri,”audio/MP3”)  
startActivity(intent);

Category类别:

  • android.intent.category.LAUNCHER //启动项
  • android.intent.category.DEFAULT //默认类别
intent.addCategory(CATEGORY_APP_SUCCESS)

系统内置意图:

// 打开Web浏览器
Uri uri = Uri.parse("http://www.sina.com/");
Intent it = new Intent(Intent.ACTION_VIEW, uri);
startActivity(it);

// 打开地图
Uri uri = Uri.parse("geo:39.904667,116.408198");//纬度、经度
Intent it = new Intent(Intent.ACTION_VIEW, uri);
startActivity(it);

// 拨打电话
Uri uri = Uri.parse("tel:100861");
Intent it = new Intent(Intent.ACTION_VIEW, uri);

// 发送Email
Intent it = new Intent(Intent.ACTION_SEND);

//发送内容
it.putExtra(Intent.EXTRA_TEXT, "The email body text");

//发送主题
it.putExtra(Intent.EXTRA_SUBJECT, "Subject");

//设置数据类型
it.setType("text/plain");
startActivity(it);

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值