安卓 Intent

Intent是一种运行时绑定(run-time binding)机制,它能在程序运行过程中连接两个不同的组件。通过Intent,你的程序可以向Android表达某种请求或者意愿,Android会根据意愿的内容选择适当的组件来完成请求。

Intent调用常见系统组件
// 调用浏览器 
Uri webViewUri = Uri.parse("https://www.baidu.com"); 
Intent intent = new Intent(Intent.ACTION_VIEW, webViewUri); 
  
// 调用地图 
Uri mapUri = Uri.parse("geo:100,100"); 
Intent intent = new Intent(Intent.ACTION_VIEW, mapUri); 
  
// 播放mp3 
Uri playUri = Uri.parse("file:///sdcard/**.mp3"); 
Intent intent = new Intent(Intent.ACTION_VIEW, playUri); 
intent.setDataAndType(playUri, "audio/mp3"); 
  
// 调用拨打电话 
Uri dialUri = Uri.parse("tel:10086"); 
Intent intent = new Intent(Intent.ACTION_DIAL, dialUri); 
// 直接拨打电话,需要加上权限<uses-permission id="android.permission.CALL_PHONE" /> 
Uri callUri = Uri.parse("tel:10086"); 
Intent intent = new Intent(Intent.ACTION_CALL, callUri); 
  
// 调用发邮件(这里要事先配置好的系统Email,否则是调不出发邮件界面的) 
Uri emailUri = Uri.parse("mailto:邮件地址"); 
Intent intent = new Intent(Intent.ACTION_SENDTO, emailUri); 
// 直接发邮件 
Intent intent = new Intent(Intent.ACTION_SEND); 
String[] tos = { "目标邮件地址" }; 
String[] ccs = { "邮件地址" }; 
intent.putExtra(Intent.EXTRA_EMAIL, tos); 
intent.putExtra(Intent.EXTRA_CC, ccs); 
intent.putExtra(Intent.EXTRA_TEXT, "the email text"); 
intent.putExtra(Intent.EXTRA_SUBJECT, "subject"); 
intent.setType("text/plain"); 
Intent.createChooser(intent, "Choose Email Client"); 
  
// 发短信 
Intent intent = new Intent(Intent.ACTION_VIEW); 
intent.putExtra("sms_body", "the sms text"); 
intent.setType("vnd.android-dir/mms-sms"); 
// 直接发短信 
Uri smsToUri = Uri.parse("smsto:10086"); 
Intent intent = new Intent(Intent.ACTION_SENDTO, smsToUri); 
intent.putExtra("sms_body", "the sms text"); 
// 发彩信 
Uri mmsUri = Uri.parse("content://media/external/images/media/23"); 
Intent intent = new Intent(Intent.ACTION_SEND); 
intent.putExtra("sms_body", "the sms text"); 
intent.putExtra(Intent.EXTRA_STREAM, mmsUri); 
intent.setType("image/png"); 
  
// 卸载应用 
Uri uninstallUri = Uri.fromParts("package", "应用包名", null); 
Intent intent = new Intent(Intent.ACTION_DELETE, uninstallUri); 
// 安装应用 
Intent intent = new Intent(Intent.ACTION_VIEW); 
intent.setDataAndType(Uri.fromFile(new File("/sdcard/应用安装包.apk"), "application/vnd.android.package-archive"); 
  
// 在Android Market中查找应用 
Uri uri = Uri.parse("market://search?q=搜索内容");   
Intent intent = new Intent(Intent.ACTION_VIEW, uri);

//分享图片

Intent intent = new Intent(Intent.ACTION_SEND);

File f = new File(imagePath);
if (f != null && f.exists() && f.isFile()) {
    intent.setType("image/*");
    Uri u = Uri.fromFile(f);
    intent.putExtra(Intent.EXTRA_STREAM, u);
}
intent.putExtra(Intent.EXTRA_SUBJECT, msgTitle);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

activity.startActivity(Intent.createChooser(intent, activityTitle));

intent参数

1.componentName(组件名称),指定Intent的目标组件的类名称。组件名称是可选的,如果填写,Intent对象会发送给指定组件名称的组件,否则也可以通过其他Intent信息定位到适合的组件。组件名称是个ComponentName类型的对象。
用法:

Intent intent = new Intent(); 
// 构造的参数为当前Context和目标组件的类路径名 
ComponentName cn = new ComponentName(HelloActivity.this, "com.byread.activity.OtherActivity"); 
intent.setComponent(cn); 
startActivity(intent); 
或 
Intent intent = new Intent(); 
intent.setClass(HelloActivity.this, OtherActivity.class); 
startActivity(intent); 

2.action(动作),指定Intent的执行动作。

一些常用的Action:

  • ACTION_CALL activity 启动一个电话.
  • ACTION_EDIT activity 显示用户编辑的数据.
  • ACTION_MAIN activity 作为Task中第一个Activity启动
  • ACTION_SYNC activity 同步手机与数据服务器上的数据.
  • ACTION_BATTERY_LOW broadcast receiver 电池电量过低警告.
  • ACTION_HEADSET_PLUG broadcast receiver 插拔耳机警告
  • ACTION_SCREEN_ON broadcast receiver 屏幕变亮警告.
  • ACTION_TIMEZONE_CHANGED broadcast receiver 改变时区警告.

3.data(数据),起到表示数据和数据MIME类型的作用。不同的action是和不同的data类型配套的,通过设置data的Uri来获得。

4.category(类别),被执行动作的附加信息。例如应用的启动Activity在intent-filter中设置category。

5.extras(附加信息),为处理Intent组件提供附加的信息。可通过putXX()和getXX()方法存取信息;也可以通过创建Bundle对象,再通过putExtras()和getExtras()方法来存取。

6.flags(标记),指示Android如何启动目标Activity,设置方法为调用Intent的setFlags方法。常用的Flags参数有:

FLAG_ACTIVITY_CLEAR_TOP
FLAG_ACTIVITY_NEW_TASK
FLAG_ACTIVITY_NO_HISTORY
FLAG_ACTIVITY_SINGLE_TOP

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值