Android Intent
2016-06-02 18:28
531 查看
1.简介
不同组件之间通信的“媒介”专门提供组件互相调用的相关信息。(activity, service, broadcasts)
2.属性
动作(Action),数据(Data),分类(Category),类型(Type),组件(Compent)以及扩展信(Extra)。其中最常用的是Action属性
1)action
EXTRA_INITIAL_INTENTS//附加选择器
ACTION_CHOOSER//文件选择器
ACTION_GET_CONTENT//内容选择列表
MediaStore.ACTION_IMAGE_CAPTURE//打开一组相机的列表引用
2)data
Intent的Data属性是执行动作的URI和MIME类型,不同的Action有不同的Data数据指定。比如:ACTION_EDIT Action应该和要编辑的文档URI Data匹配,ACTION_VIEW应用应该和要显示的URI匹配。
3)Category
CATEGORY_BROWSABLE
CATEGORY_GADGET
CATEGORY_HOME
CATEGORY_LAUNCHER
CATEGORY_PREFERENCE
4)Type
ntent的Type属性显式指定Intent的数据类型(MIME)。一般Intent的数据类型能够根据数据本身进行判定,但是通过设置这个属性,可以强制采用显式指定的类型而不再进行推导。
5)Compent
Intent的Compent属性指定Intent的的目标组件的类名称。通常 Android会根据Intent 中包含的其它属性的信息,比如action、data/type、category进行查找,最终找到一个与之匹配的目标组件。但是,如果 component这个属性有指定的话,将直接使用它指定的组件,而不再执行上述查找过程。指定了这个属性以后,Intent的其它所有属性都是可选的。
6)Extra
Intent的Extra属性是添加一些组件的附加信息。
putExtra()/getStringExtra()
3.使用经验
1)上传图片,文件选择/拍照
不同组件之间通信的“媒介”专门提供组件互相调用的相关信息。(activity, service, broadcasts)
2.属性
动作(Action),数据(Data),分类(Category),类型(Type),组件(Compent)以及扩展信(Extra)。其中最常用的是Action属性
1)action
EXTRA_INITIAL_INTENTS//附加选择器
ACTION_CHOOSER//文件选择器
ACTION_GET_CONTENT//内容选择列表
MediaStore.ACTION_IMAGE_CAPTURE//打开一组相机的列表引用
2)data
Intent的Data属性是执行动作的URI和MIME类型,不同的Action有不同的Data数据指定。比如:ACTION_EDIT Action应该和要编辑的文档URI Data匹配,ACTION_VIEW应用应该和要显示的URI匹配。
3)Category
CATEGORY_BROWSABLE
CATEGORY_GADGET
CATEGORY_HOME
CATEGORY_LAUNCHER
CATEGORY_PREFERENCE
4)Type
ntent的Type属性显式指定Intent的数据类型(MIME)。一般Intent的数据类型能够根据数据本身进行判定,但是通过设置这个属性,可以强制采用显式指定的类型而不再进行推导。
5)Compent
Intent的Compent属性指定Intent的的目标组件的类名称。通常 Android会根据Intent 中包含的其它属性的信息,比如action、data/type、category进行查找,最终找到一个与之匹配的目标组件。但是,如果 component这个属性有指定的话,将直接使用它指定的组件,而不再执行上述查找过程。指定了这个属性以后,Intent的其它所有属性都是可选的。
6)Extra
Intent的Extra属性是添加一些组件的附加信息。
putExtra()/getStringExtra()
3.使用经验
1)上传图片,文件选择/拍照
public Intent getUploadIntent() {//总选择器 Intent selectIntent = getSelectIntent(); Intent captureIntent = getCaptureIntent(); Intent chooser = getChooserIntent(selectIntent); if (captureIntent != null) { chooser.putExtra(Intent.EXTRA_INTENT, captureIntent); } return chooser; } private Intent getSelectIntent() {//图片选择 Intent intent = new Intent(); intent.setType("image/*"); intent.setAction(Intent.ACTION_GET_CONTENT); return intent; } private Intent getCaptureIntent() {//照片选择 Intent intent = new Intent(); intent.setAction(MediaStore.ACTION_IMAGE_CAPTURE); if (intent.resolveActivity(WebViewActivity.this.getPackageManager()) != null) { try { picFile = createImageFile(); } catch (Exception e) { ToastUtil.showShort(MyActivity.this, "no permission"); e.printStackTrace(); } if (picFile != null) { intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(picFile)); } else { return null; } } else { return null; } return intent; } private File createImageFile() throws Exception {//获得照片文件 File storageDir = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES); if (!storageDir.exists()) { storageDir.mkdirs(); } captureFile = File.createTempFile("tamp", ".png", storageDir); return captureFile; } private Intent getChooserIntent(Intent... intents) {//文件选择器 Intent intent = new Intent(); intent.setAction(Intent.ACTION_CHOOSER); intent.putExtra(Intent.EXTRA_INITIAL_INTENTS, intents); return intent; }
相关文章推荐
- 使用C++实现JNI接口需要注意的事项
- Android IPC进程间通讯机制
- Android Manifest 用法
- [转载]Activity中ConfigChanges属性的用法
- Android之获取手机上的图片和视频缩略图thumbnails
- Android之使用Http协议实现文件上传功能
- Android学习笔记(二九):嵌入浏览器
- android string.xml文件中的整型和string型代替
- i-jetty环境搭配与编译
- android之定时器AlarmManager
- android wifi 无线调试
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- android 代码实现控件之间的间距
- android FragmentPagerAdapter的“标准”配置
- Android"解决"onTouch和onClick的冲突问题
- android:installLocation简析
- android searchView的关闭事件
- SourceProvider.getJniDirectories