為了使用一個預裝Android應用程序中存在的功能,利用意圖通常是最快捷的方式。出于介紹本章中示例的目的,讓我們看看如何利用內(nèi)置的Gallery(圖像庫)應用程序選擇希望使用的圖像。
我們將要使用的意圖是一個通用的Intent.ACTION_PICK,它通知Android:我們想要選擇一塊數(shù)據(jù)。同時,我們還提供了一個將要從中獲取數(shù)據(jù)的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);
當觸發(fā)這個意圖時,它會以用戶能夠選擇一幅圖像的模式啟動Gallery應用程序。
與通常從意圖返回一樣,在用戶選中圖像之后將觸發(fā)onActivityResult方法。在返回的意圖數(shù)據(jù)中,將返回所選擇圖像的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;
我們的活動會響應由按鈕觸發(fā)的單擊事件,因此將實現(xiàn)OnClickListener。在onCreate方法中,使用通常的findViewById方法訪問在布局XML中定義的必要UI元素。