当前位置:K88软件开发文章中心编程语言APP编程Android01 → 文章内容

4.5.1 Intent的基本使用

减小字体 增大字体 作者:佚名  来源:网上搜集  发布时间:2019-1-12 6:26:22

本节引言:在上一节结束后意味着Android的四大组件我们都已经学习完毕了~,而本节我们要学习的是四大组件间的枢纽——Intent(意图),Android通信的桥梁,比如我们可以通过:startActivity(Intent)/startActivityForResult(Intent):来启动一个ActivitystartService(Intent)/bindService(Intent):来启动一个ServicesendBroadcast:发送广播到指定BroadcastReceiver另外别忘了我们在注册四大组件时,写得很多的Intent-Filter哦~好吧,话不多说,开始本节内容!另外前面我们已经用过Intent了,就不在讲述概念性的东西了~老规矩,官方API:Intent1.显式Intent与隐式Intent的区别显式Intent:通过组件名指定启动的目标组件,比如startActivity(new Intent(A.this,B.class));每次启动的组件只有一个~隐式Intent:不指定组件名,而指定Intent的Action,Data,或Category,当我们启动组件时,会去匹配AndroidManifest.xml相关组件的Intent-filter,逐一匹配出满足属性的组件,当不止一个满足时,会弹出一个让我们选择启动哪个的对话框~2.Intent的七个属性:1)ComponentName(组件名称)2)Action(动作)3)Category(类别)4)Data(数据),Type(MIME类型)5)Extras(额外)6)Flags(标记)3.显式Intent使用示例:这个用得很多,直接就上例子了:例子1:点击按钮返回Home界面:运行效果图:核心代码:Intent it = new Intent();it.setAction(Intent.ACTION_MAIN);it.addCategory(Intent.CATEGORY_HOME);startActivity(it);例子2:点击按钮打开百度页面:运行效果图:核心代码:Intent it = new Intent();it.setAction(Intent.ACTION_VIEW);it.setData(Uri.parse("http://www.baidu.com"));startActivity(it);4.隐式Intent详解1)预定义动作的隐式Intent示例:代码示例:点击按钮后,所有Action为VIEW的Activity被筛选出来,由用户进一步选择:核心代码:建立第二个Activity的布局,与对应的Activity,在第一个Activity的按钮点击事件中添加一下代码:Intent it = new Intent();it.setAction(Intent.ACTION_VIEW);startActivity(it);最后在第二个Activity的Intent中添加以下代码:<activity android:name=".SecondActivity" android:label="第二个Activity"> <intent-filter> <action android:name="android.intent.action.VIEW"/> <category android:name="android.intent.category.DEFAULT"/> </intent-filter> </activity> 运行效果图:2)自定义动作的隐式Intent示例:代码示例:使用自定义的Action与category来激活另一个Activity核心代码:建立第二个Activity的布局,与对应的Activity,在第一个Activity的按钮点击事件中添加一下代码:Intent it = new Intent();it.setAction("my_action");it.addCategory("my_category");startActivity(it);    最后在第二个Activity的Intent中添加以下代码:<activity android:name=".SecondActivity" android:label="第二个Activity"> <intent-filter> <action android:name="my_action"/> <category android:name="my_category"/> <category android:name="android.intent.category.DEFAULT"/> </intent-filter> </activity>注意虽然我们自定义了一个category,但是还是要把这个默认的加上,不然会报错的:<category android:name="android.intent.category.DEFAULT"/>5.常用系统Intent合集大家贴下常用的系统Intent的合集吧,上面没有的欢迎提出~//===============================================================//1.拨打电话// 给移动客服10086拨打电话Uri uri = Uri.parse("tel:10086");Intent intent = new Intent(Intent.ACTION_DIAL, uri);startActivity(intent);//===============================================================//2.发送短信// 给10086发送内容为“Hello”的短信Uri uri = Uri.parse("smsto:10086");Intent intent = new Intent(Intent.ACTION_SENDTO, uri);intent.putExtra("sms_body", "Hello");startActivity(intent);//3.发送彩信(相当于发送带附件的短信)Intent intent = new Intent(Intent.ACTION_SEND);intent.putExtra("sms_body", "Hello");Uri uri = Uri.parse("content://media/external/images/media/23");intent.putExtra(Intent.EXTRA_STREAM, uri);intent.setType("image/png");startActivity(intent);//===============================================================//4.打开浏览器:// 打开百度主页Uri uri = Uri.parse("http://www.baidu.com");Intent intent  = new Intent(Intent.ACTION_VIEW, uri);startActivity(intent);//===============================================================//5.发送电子邮件:(阉割了Google服务的没戏!!!!)// 给someone@domain.com发邮件Uri uri = Uri.parse("mailto:someone@domain.com");Intent intent = new Intent(Intent.ACTION_SENDTO, uri);startActivity(intent);// 给someone@domain.com发邮件发送内容为“Hello”的邮件Intent intent = new Intent(Intent.ACTION_SEND);intent.putExtra(Intent.EXTRA_EMAIL, "someone@domain.com");intent.putExtra(Intent.EXTRA_SUBJECT, "Subject");intent.putExtra(Intent.EXTRA_TEXT, "Hello");intent.setType("text/plain");startActivity(intent);// 给多人发邮件Intent intent=new Intent(Intent.ACTION_SEND);String[] tos = {"1@abc.com", "2@abc.com"}; // 收件人String[] ccs = {"3@abc.com", "4@abc.com"}; // 抄送String[] bccs = {"5@abc.com", "6@abc.com"}; // 密送intent.putExtra(Intent.EXTRA_EMAIL, tos);intent.putExtra(Intent.EXTRA_CC, ccs);intent.putExtra(Intent.EXTRA_BCC, bccs);intent.putExtra(Intent.EXTRA_SUBJECT, "Subject");intent.putExtra(Intent.EXTRA_TEXT, "Hello");intent.setType("message/rfc822");startActivity(intent);//===============================================================//6.显示地图:// 打开Google地图中国北京位置(北纬39.9,东经116.3)Uri uri = Uri.parse("geo:39.9,116.3");Intent in

[1] [2] [3]  下一页


4.5.1 Intent的基本使用