首先是相冊圖片的獲取:android
private final String IMAGE_TYPE = "image/*";數據庫
private final int IMAGE_CODE = 0; //這裏的IMAGE_CODE是本身任意定義的ide
//使用intent調用系統提供的相冊功能,使用startActivityForResult是爲了獲取用戶選擇的圖片索引
Intent getAlbum = new Intent(Intent.ACTION_GET_CONTENT);接口
getAlbum.setType(IMAGE_TYPE);圖片
startActivityForResult(getAlbum, IMAGE_CODE);文檔
//重寫onActivityResult以得到你須要的信息get
@Overrideit
protected void onActivityResult(int requestCode, int resultCode, Intent data){io
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());
}
}
}