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();
//最後根據索引值獲取圖片路徑www.aiwalls.com
String path = cursor.getString(column_index);
}catch (IOException e) {
Log.e(TAG,e.toString());
}
}
}

發佈留言