首先是相冊圖片的獲取:

 

private final String IMAGE_TYPE = "image/*";
private final int IMAGE_CODE = 0; 這裡的IMAGE_CODE是自己任意定義的

 

使用intent調用系統提供的相冊功能,使用startActivityForResult是為了獲取使用者選擇的圖片

 

Intent getAlbum = new Intent(Intent.ACTION_GET_CONTENT);
getAlbum.setType(IMAGE_TYPE);
startActivityForResult(getAlbum, IMAGE_CODE);

 

重寫onActivityResult以獲得你需要的資訊

 

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data){
if (resultCode != RESULT_OK) { //此處的 RESULT_OK 是系統自訂得一個常量
Log.e(TAG,"ActivityResult resultCode error");
return;
}

 

Bitmap bm = null;

 

外界的程式訪問ContentProvider所提供資料 可以通過ContentResolver介面
ContentResolver resolver = getContentResolver();

 

此處的用於判斷接收的Activity是不是你想要的那個
if (requestCode == IMAGE_CODE) {
try {
Uri originalUri = data.getData(); 獲得圖片的uri

 

bm = MediaStore.Images.Media.getBitmap(resolver, originalUri); 顯得到bitmap圖片

 

這裡開始的第二部分,獲取圖片的路徑:

 

String[] proj = {MediaStore.Images.Media.DATA};

 

好像是android多媒體資料庫的封裝介面,具體的看Android文檔
Cursor cursor = managedQuery(originalUri, proj, null, null, null);
按我個人理解 這個是獲得使用者選擇的圖片的索引值
int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
將游標移至開頭 ,這個很重要,不小心很容易引起越界
cursor.moveToFirst();
最後根據索引值獲取圖片路徑
String path = cursor.getString(column_index);
}catch (IOException e) {
Log.e(TAG,e.toString());
}
}
}
 
來源:
http://blog.csdn.net/hugh114/article/details/5765332
arrow
arrow
    全站熱搜

    戮克 發表在 痞客邦 留言(0) 人氣()