为了使用一个预装Android应用程序中存在的功能,利用意图通常是最快捷的方式。出于介绍本章中示例的目的,让我们看看如何利用内置的Gallery(图像库)应用程序选择希望使用的图像。
我们将要使用的意图是一个通用的Intent.ACTION_PICK,它通知Android:我们想要选择一块数据。同时,我们还提供了一个将要从中获取数据的URI。在当前情况下,使用android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI,这意味着会选择通过使用MediaStore存储在SD卡上的图像。
Intent choosePictureIntent = new Intent(Intent.ACTION_PICK,
android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
当触发这个意图时,它会以用户能够选择一幅图像的模式启动Gallery应用程序。
与通常从意图返回一样,在用户选中图像之后将触发onActivityResult方法。在返回的意图数据中,将返回所选择图像的URI。
onActivityResult(int requestCode, int resultCode, Intent intent) {
super.onActivityResult(requestCode, resultCode, intent);
if (resultCode == RESULT_OK) {
Uri imageFileUri = intent.getData();
}
}
以下是完整的示例:
package com.apress.proandroidmedia.ch3.choosepicture;
import java.io.FileNotFoundException;
import android.app.Activity;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.net.Uri;
import android.os.Bundle;
import android.util.Log;
import android.view.Display;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ImageView;
我们的活动会响应由按钮触发的单击事件,因此将实现OnClickListener。在onCreate方法中,使用通常的findViewById方法访问在布局XML中定义的必要UI元素。