Intent学习笔记(一)

来源:互联网 发布:it公司市值排名 编辑:程序博客网 时间:2024/06/05 03:14

//主键的激活方式 --意图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数据

                  

原创粉丝点击