android 应用组件[通用 Intent---检索特定类型的文件] 十一

来源:互联网 发布:c语言strncmp函数 编辑:程序博客网 时间:2024/05/16 09:32

如需请求用户选择文档或照片等文件并向您的应用返回文件引用,请使用 ACTION_GET_CONTENT 操作并指定所需 MIME 类型。 向您的应用返回的文件引用对 Activity 的当前生命周期而言是瞬态引用,因此如果您想稍后进行访问,就必须导入可在稍后读取的副本。用户还可利用此 Intent 在进程中创建新文件(例如,用户可以不选择现有照片,而是用相机拍摄新照片)。

传送至您的 onActivityResult() 方法的结果 Intent 包括的数据具有指向该文件的 URI。该 URI 可以是任何类型,如 http: URI、file: URI 或 content:URI。 不过,如果您想将可选择的文件限定为可从内容提供程序 (content: URI) 访问的文件,以及通过 openFileDescriptor() 以文件流形式提供的文件,则您应该为 Intent 添加 CATEGORY_OPENABLE 类别。

在 Android 4.3(API 级别 18)及更高版本上,您还可以通过为 Intent 添加 EXTRA_ALLOW_MULTIPLE 并将其设置为 true,允许用户选择多个文件。然后您就可以在 getClipData() 返回的 ClipData 对象中访问每一个选定的文件。

操作
ACTION_GET_CONTENT
数据 URI 架构
MIME 类型
与用户应选择的文件类型对应的 MIME 类型。
Extra
EXTRA_ALLOW_MULTIPLE
一个布尔型值,声明用户是否可以一次选择多个文件。
EXTRA_LOCAL_ONLY
一个布尔型值,声明是否返回的文件必须直接存在于设备上,而不是需要从远程服务下载。
类别(可选)
CATEGORY_OPENABLE
只返回可通过 openFileDescriptor() 以文件流形式表示的“可打开”文件。

用于获取照片的示例 Intent

static final int REQUEST_IMAGE_GET = 1;public void selectImage() {    Intent intent = new Intent(Intent.ACTION_GET_CONTENT);    intent.setType("image/*");    if (intent.resolveActivity(getPackageManager()) != null) {        startActivityForResult(intent, REQUEST_IMAGE_GET);    }}@Overrideprotected void onActivityResult(int requestCode, int resultCode, Intent data) {    if (requestCode == REQUEST_IMAGE_GET && resultCode == RESULT_OK) {        Bitmap thumbnail = data.getParcelable("data");        Uri fullPhotoUri = data.getData();        // Do work with photo saved at fullPhotoUri        ...    }}

用于返回照片的示例 Intent 过滤器

<activity ...>    <intent-filter>        <action android:name="android.intent.action.GET_CONTENT" />        <data android:type="image/*" />        <category android:name="android.intent.category.DEFAULT" />        <!-- The OPENABLE category declares that the returned file is accessible             from a content provider that supports OpenableColumns             and ContentResolver.openFileDescriptor() -->        <category android:name="android.intent.category.OPENABLE" />    </intent-filter></activity>


0 0
原创粉丝点击