手頭上正在做Android平台的一個項目,需要用到相簿的圖片,就順便記錄下,方便自己以後回顧。好了,廢話就到此為止了。以下給出的是部分代碼,可以根據自己的需要進行修改~
首先是相簿圖片的擷取:
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