Intent介绍
Activity、Service、Broadcast通信,可传递Bundle。
Intent属性
Component name属性
通过setComponent()指定
// 开启其他Activity
Intent intent = new Intent();
ComponentName componentName = new ComponentName(包名,类名);
intent.setComponent(componentName);
startActivity(intent);
Action和Data属性
这两个属性联合使用。
// 发送短信,另外需要获取发短信权限
Intent intent = new Intent();
intent.setAction(intent.ACTION_SENDTO);
intent.setData(Uri.parse("sms:10086")); // 发短信给10086
intent.putExtra("message", "查询话费")); // 默认短信内容
startActivity(intent);
Action和Category属性
这两个属性联合使用。
// 返回桌面
Intent intent = new Intent();
intent.setAction(intent.ACTION_MAIN); // 标识程序主入口
intent.addCategory(intent.CATEGORY_HOME);
startActivity(intent);
Extra和Flags属性
putExtras();
getExtras();
// 不保存Activity的栈历史
Intent intent = new Intent(MainActivity.this, DetailActivity.class);
intent.setFlags(intent.FLAG_ACTIVITY_NO_HISTORY);
startActivity(intent);
intent种类
- 显式intent
- 隐式intent
显式intent:
多用于一个应用内。
Intent intent = new Intent(MainActivity.this, DetailActivity.class);
隐式intent:
多用于不同应用程序之间。
Intent intent = new Intent();
intent.setAction(intent.ACTION_VIEW);
intent.setData(Uri.parse("http://www.baidu.com"));
startActivity(intent);
intent过滤器
通过AndroidMainfest.xml中的<intent-filter>配置。
<intent-filter>
<action.../>
<category.../>
<data.../>
</intent-filter>