Android学习笔记----Intent基本用法
来源:互联网 发布:怎样在淘宝上捡漏 编辑:程序博客网 时间:2024/06/05 08:34
Intent 意图 , 描述一个动作, 激活一个组件
显示意图 必须要知道被激活的组件的包名和 class的名字
第一种写法
Intent intent = new Intent();intent.setClassName("cn.itcast.mutileactivity", "cn.itcast.mutileactivity.Demo2Activity");
第二种写法
Intent intent = new Intent(this,Demo2Activity.class);
第三种写法
Intent intent = new Intent();ComponentName component = new ComponentName("cn.itcast.mutileactivity", "cn.itcast.mutileactivity.Demo2Activity");intent.setComponent(component);。。。。。。。。。。。。。
public Intent setClassName (String packageName, String className)
packageName 要启动的组件所在的应用程序的包名
className 要启动的Acticity或者其他组件的名称
隐式意图
<activity android:name=".activity.ChooseAreaActivity" android:label="@string/title_activity_choose_area" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.DEFAULT" /> </intent-filter></activity>
<action> 标签中我们指明了当前活动可以响应 com.example.activitytest.ACTION_START 这个 action
<category>标签则包含了一些附加信息,更精确地指明了当前的活动能够响应的 Intent 中还可能带有的 category
只有<action>和<category>中的内容同时能够匹 配上 Intent 中指定的 action 和 category 时,这个活动才能响应该 Intent
Intent intent = new Intent("android.intent.action.MAIN");
startActivity(intent);
android.intent.category.DEFAULT 是一种默认的 category,在调用startActivity()方法的时候会自动将这个 category 添加到 Intent 中,所以没有调用addCategory("android.intent.category.DEFAULT "),也可以启动活动。
注意:每个 Intent 中只能指定一个 action,但却能指定多个 category。
还可以在<intent-filter>标签中再配置一个<data>标签,用于更精确地指定当前活动能够响应什么类型的数据。
<data>标签中主要可以配置以下内容。
1. android:scheme 用于指定数据的协议部分,如上例中的 http 部分。
2. android:host 用于指定数据的主机名部分,如上例中的 www.baidu.com 部分。
3. android:port 用于指定数据的端口部分,一般紧随在主机名之后。
4. android:path 用于指定主机名和端口之后的部分,如一段网址中跟在域名之后的内容。
5. android:mimeType 用于指定可以处理的数据类型,允许使用通配符的方式进行指定。
1. android:scheme 用于指定数据的协议部分,如上例中的 http 部分。
2. android:host 用于指定数据的主机名部分,如上例中的 www.baidu.com 部分。
3. android:port 用于指定数据的端口部分,一般紧随在主机名之后。
4. android:path 用于指定主机名和端口之后的部分,如一段网址中跟在域名之后的内容。
5. android:mimeType 用于指定可以处理的数据类型,允许使用通配符的方式进行指定。
只有<data>标签中指定的内容和 Intent 中携带的 Data 完全一致时,当前活动才能够响应该 Intent。不过一般在<data>标签中都不会指定过多的内容,如浏览器示例,只需要指定 android:scheme 为 http,就可以响应所有的 http 协议的 Intent 了。
<activity android:name=".activity.ChooseAreaActivity" android:label="@string/title_activity_choose_area" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.DEFAULT" /> <data android:scheme="haha" android:host="cn.itcast.demo" /> </intent-filter></activity>
Intent intent = new Intent("android.intent.action.MAIN"); intent.setData(Uri.parse("haha://cn.itcast.demo"));startActivity(intent);
例子:程序中调用浏览器,代码如下:
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("http://163.com")); startActivity(intent);
或者
Intent intent = new Intent(Intent.ACTION_VIEW); intent.setData(Uri.parse("http://163.com")); startActivity(intent);
打开图库
Intent intent = new Intent();
intent.setAction(Intent.ACTION_PICK);
intent.setType("image/jpeg");
/************************************************************/
Activity间传递数据
传递单个数据
主Activity
Intent data = new Intent("","");
data.putExtra("name", name);
startActivity(data);
被激活的Activity
Intent data = getIntent();
String name = data.getStringExtra("name","");
传递多个数据
主Activity
Intent data = new Intent("","");
Bundle bundle = new Bundle();
bundle.putString("name","zhangsan");
bundle.putString("sex","nan");
data.putExtras(bundle);
startActivity(data);
被激活的Activity
Intent data = getIntent();
Bundle bundle = data.getExtras();
String name = bundle.getString("name","");
String sex =
bundle.getString("sex","");
/************************************************************/
获取被激活的Activity返回的数据
主Activity
private final int REQUESTCODE_A=1;// requestCode用来判断是从哪个Activity返回的 private final int REQUESTCODE_B=2;// Intent intent_a = new Intent("",""); intent_a.putExtra("name","name"); startActivityForResult(intent_a,REQUESTCODE_A);//第二个参数是requestCode,以此来判断数据是从哪个Activity返回的 Intent intent_b = new Intent("",""); intent_b.putExtra("dianhua","123456"); startActivityForResult(intent_b,REQUESTCODE_B);//第二个参数是requestCode,以此来判断数据是从哪个Activity返回的
注意:如果要获取激活的Activity返回的数据, 在用startActivityForResult(”“,”“)激活活动时,一定不要使用finish()方法销毁原来的活动,即startActivityForResult(”“,”“)方法跟finish()方法不要同时使用。重写Activity的 onActivityResult方法
@Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { // TODO Auto-generated method stub super.onActivityResult(requestCode, resultCode, data); if(resultCode==2){ //如果resultCode==2则说明处理成功 if(requestCode==REQUESTCODE_A){ // 判断数据是从哪个Activity返回的 String result = data.getStringRxtra("dedaole","");//接收返回数据 ............................................................................................ }else if(requestCode==REQUESTCODE_B){ .......................................................................................................... } } }
requestCode 用来判断数据是从哪个Activity返回的
resultCode 用来标示被激活的Activity接收到传递过来的数据后,对数据的处理结果,处理的结果不同返回的数据不同。
被激活的Activity
......................................................//此处为获取Activity传递过来的数据,并作出相应的处理,根据处理的结果不同,返回不同的“结果码: resultCode”Intent data = new Intent();data.putExtra("dedaole", "dedaole");setResult(2, data); //返回的2是“结果码: resultCode”,设置不同的结果码来表示数据处理的不同结果,此处返回的结果码为2,来表示数据处理成功。finish();
private final int REQUESTCODE_A=1;// requestCode用来判断是从哪个Activity返回的 private final int REQUESTCODE_B=2;// Intent intent_a = new Intent("",""); intent_a.putExtra("name","name"); startActivityForResult(intent_a,REQUESTCODE_A);//第二个参数是requestCode,以此来判断数据是从哪个Activity返回的 Intent intent_b = new Intent("",""); intent_b.putExtra("dianhua","123456"); startActivityForResult(intent_b,REQUESTCODE_B);//第二个参数是requestCode,以此来判断数据是从哪个Activity返回的
注意:如果要获取激活的Activity返回的数据, 在用startActivityForResult(”“,”“)激活活动时,一定不要使用finish()方法销毁原来的活动,即startActivityForResult(”“,”“)方法跟finish()方法不要同时使用。重写Activity的 onActivityResult方法
@Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { // TODO Auto-generated method stub super.onActivityResult(requestCode, resultCode, data); if(resultCode==2){ //如果resultCode==2则说明处理成功 if(requestCode==REQUESTCODE_A){ // 判断数据是从哪个Activity返回的 String result = data.getStringRxtra("dedaole","");//接收返回数据 ............................................................................................ }else if(requestCode==REQUESTCODE_B){ .......................................................................................................... } } }
requestCode 用来判断数据是从哪个Activity返回的
resultCode 用来标示被激活的Activity接收到传递过来的数据后,对数据的处理结果,处理的结果不同返回的数据不同。
被激活的Activity
......................................................//此处为获取Activity传递过来的数据,并作出相应的处理,根据处理的结果不同,返回不同的“结果码: resultCode”Intent data = new Intent();data.putExtra("dedaole", "dedaole");setResult(2, data); //返回的2是“结果码: resultCode”,设置不同的结果码来表示数据处理的不同结果,此处返回的结果码为2,来表示数据处理成功。finish();
@Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { // TODO Auto-generated method stub super.onActivityResult(requestCode, resultCode, data); if(resultCode==2){ //如果resultCode==2则说明处理成功 if(requestCode==REQUESTCODE_A){ // 判断数据是从哪个Activity返回的 String result = data.getStringRxtra("dedaole","");//接收返回数据 ............................................................................................ }else if(requestCode==REQUESTCODE_B){ .......................................................................................................... } } }
requestCode 用来判断数据是从哪个Activity返回的
resultCode 用来标示被激活的Activity接收到传递过来的数据后,对数据的处理结果,处理的结果不同返回的数据不同。
被激活的Activity
......................................................//此处为获取Activity传递过来的数据,并作出相应的处理,根据处理的结果不同,返回不同的“结果码: resultCode”Intent data = new Intent();data.putExtra("dedaole", "dedaole");setResult(2, data); //返回的2是“结果码: resultCode”,设置不同的结果码来表示数据处理的不同结果,此处返回的结果码为2,来表示数据处理成功。finish();
0 0
- Android学习笔记----Intent基本用法
- Android学习随笔(2)------Intent基本用法
- 【Android学习笔记】Intent的基本作用
- Intent的用法 - Android学习笔记2
- Android学习笔记(一) Intent用法总结
- android学习笔记(一)activity的基本用法和创建,bundle如何传递数据,intent的用法
- Android Intent 基本用法示例
- Android 学习笔记(10)—— Intent 基本运用
- Android学习笔记--Intent
- android学习笔记---Intent
- Android学习笔记 - Intent
- android学习笔记之通过Intent传递Bundle用法
- Android笔记 Intent用法总结
- android 学习笔记 线程的基本用法
- android 学习笔记 服务的基本用法
- Android学习笔记-Service 基本用法
- Android学习笔记----SQLite数据库基本用法
- Android学习笔记----ContentProvider基本用法
- 联合体union
- Java基础
- 基址重定位
- s:iterator 遍历list
- Qt组播(多播)总结
- Android学习笔记----Intent基本用法
- Android Studio修改packagename
- [LeetCode]Increasing Triplet Subsequence
- Xshell从windows与服务器之间的文件传送rz/sz
- 负载均衡—大型网站架构系列:负载均衡详解(上)
- android-USB-OTG 外部设备通讯 USB插拔检测
- Going deeper with convolutions-GoogLeNet(阅读)
- iOS经典面试题总结--内存管理
- 多节点任务框架设计之数据库设计解决方案