Intent学习笔记(一)
2013-04-18 00:52
239 查看
//主键的激活方式 --意图Intent
Intentintent = new Intent();
1-->intent.setClass(Context packageContext,Class<?> cls);参数(上下文对象,待激活组件类)
2-->intent.setClassName(Context packageContext,String className);参数(上下文对象,待激活组件类名)
3-->intent.setClassName(String packageName,String className);参数(待激活组件包名,待激活组件类名),跨应用激活
4-->intent.setComponent(Component component);参数(new ComponentName(pkg, cls))
5-->Intentintent = new Intent(Context packageContext, Class<?> cls)
startActivity(intent);
//要求所激活的组件返回数据
startActivityForResult(Intent intent,int requestCode)
requestCode请求码,区分返回数据的来源
//以上皆为显式Intent
//下面看隐式Intent
隐式意图就是不明确指定需要被激活的组件,而由系统通过Intent所设置的Action(动作),category(类别),data(数据),type(类型)去匹配清单文件中所有组件中intent-filter的各项参数,从而找出最合适的组件
Intentintent = new Intent();
intent.setAction("org.zjl.xx");
intent.addCategory("org.zjl.category.xx");
未设置数据参数data和类型参数type时,只要Intent的Action和Category都出现在某个组件的intent-filter中,就可以与之匹配
intent.setData(Uri.parse("xxx://org.zjl.**/(path)"));data参数为Uri类型
intent.setType("image/jpeg");当使用这个方法设置类型时,会把intent的data数据清除,需要时可以使用下面这个方法
intent.setDataAndType(Uri data,String type);
startActivity(intent);执行这个方法时,系统会为intent注册一个默认类别android.intent.category.DEFAULT
所以,还需要在清单文件中intent-filter中额外添加这个类别
<catagoryandroid:name="android.intent.category.DEFAULT">
//基本类型数据传递
1-->intent.putExtra(String name,Object value);参数(参数名,参数值)
2-->Bundlebundle = new Bundle();
bundle.putString(String key,String value);
bundle.putInt(String key,int value);
...
intent.putExtras(bundle);
//获得已激活组件所返回的数据
重写方法
voidonActivityResult(int requestCode,int resultCode,Intent data){}
requestCode请求来源
resultCode响应来源
data返回的数据
****************************************************************************************
//在已激活组件中获取数据
1-->intent = getIntent();
intent.getStringExtra(name);
intent.getIntExtra(name,defaultValue);
...
2-->类似于Map的Bundle对象,intent内部使用的就是这个对象存放数据
Bundlebundle = intent.getExtras();
bundle.getString(key);
bundle.getInt(key);
...
//被要求返回数据
在组件关闭之前
Intentdata = new Intent();
1-->data.putExtra(String name,Object value);
2-->data.putExtras(bundlebundle);
setResult(resultCode,data);
resultCode结果码
data数据
Intentintent = new Intent();
1-->intent.setClass(Context packageContext,Class<?> cls);参数(上下文对象,待激活组件类)
2-->intent.setClassName(Context packageContext,String className);参数(上下文对象,待激活组件类名)
3-->intent.setClassName(String packageName,String className);参数(待激活组件包名,待激活组件类名),跨应用激活
4-->intent.setComponent(Component component);参数(new ComponentName(pkg, cls))
5-->Intentintent = new Intent(Context packageContext, Class<?> cls)
startActivity(intent);
//要求所激活的组件返回数据
startActivityForResult(Intent intent,int requestCode)
requestCode请求码,区分返回数据的来源
//以上皆为显式Intent
//下面看隐式Intent
隐式意图就是不明确指定需要被激活的组件,而由系统通过Intent所设置的Action(动作),category(类别),data(数据),type(类型)去匹配清单文件中所有组件中intent-filter的各项参数,从而找出最合适的组件
Intentintent = new Intent();
intent.setAction("org.zjl.xx");
intent.addCategory("org.zjl.category.xx");
未设置数据参数data和类型参数type时,只要Intent的Action和Category都出现在某个组件的intent-filter中,就可以与之匹配
intent.setData(Uri.parse("xxx://org.zjl.**/(path)"));data参数为Uri类型
intent.setType("image/jpeg");当使用这个方法设置类型时,会把intent的data数据清除,需要时可以使用下面这个方法
intent.setDataAndType(Uri data,String type);
startActivity(intent);执行这个方法时,系统会为intent注册一个默认类别android.intent.category.DEFAULT
所以,还需要在清单文件中intent-filter中额外添加这个类别
<catagoryandroid:name="android.intent.category.DEFAULT">
//基本类型数据传递
1-->intent.putExtra(String name,Object value);参数(参数名,参数值)
2-->Bundlebundle = new Bundle();
bundle.putString(String key,String value);
bundle.putInt(String key,int value);
...
intent.putExtras(bundle);
//获得已激活组件所返回的数据
重写方法
voidonActivityResult(int requestCode,int resultCode,Intent data){}
requestCode请求来源
resultCode响应来源
data返回的数据
****************************************************************************************
//在已激活组件中获取数据
1-->intent = getIntent();
intent.getStringExtra(name);
intent.getIntExtra(name,defaultValue);
...
2-->类似于Map的Bundle对象,intent内部使用的就是这个对象存放数据
Bundlebundle = intent.getExtras();
bundle.getString(key);
bundle.getInt(key);
...
//被要求返回数据
在组件关闭之前
Intentdata = new Intent();
1-->data.putExtra(String name,Object value);
2-->data.putExtras(bundlebundle);
setResult(resultCode,data);
resultCode结果码
data数据
相关文章推荐
- Android Activity和Intent机制学习笔记【转】
- Activity与Intent机制的学习笔记--转自feisky
- Android Activity和Intent机制学习笔记
- Android Activity和Intent机制学习笔记
- Android Activity和Intent机制学习笔记
- Android Activity和Intent机制学习笔记
- Android Activity和Intent机制学习笔记
- Activity和Intent机制学习笔记
- Android Activity和Intent机制学习笔记
- Android开发学习笔记-3 Activity-2 Activity和Intent关系
- ndroid学习笔记-Activity&Intent
- 3月24日学习笔记(调用隐式Intent启动浏览器)
- Android Activity和Intent机制学习笔记
- Android开发学习笔记:Intent的简介以及属性的详解
- Android开发学习笔记:Intent的简介以及属性的详解
- Android开发笔记之Intent初级学习教程
- Android应用开发学习笔记之Intent
- Android Activity和Intent机制学习笔记
- 第一行代码学习笔记-第二章 探究活动-2.Intent的使用
- Android开发学习笔记:Intent的简介以及属性的详解