在做項(xiàng)目的時(shí)候,需要調(diào)取手機(jī)本地的圖片并上傳到服務(wù)器,在小米手機(jī)上測(cè)試的時(shí)候,獲取的cursor為null,在其他手機(jī)上是沒有問(wèn)題,查詢資料發(fā)現(xiàn),在Android4.4之后返回的不再是圖片的絕對(duì)路徑,而是圖片的編碼,我們需要做一些轉(zhuǎn)換處理才能使用

老子是有素質(zhì)的人
public static Uri geturi(Intent intent,Context context) {
Uri uri = intent.getData();
String type = intent.getType();
if (uri.getScheme().equals("file") && (type.contains("image/"))) {
String path = uri.getEncodedPath();
if (path != null) {
path = Uri.decode(path);
ContentResolver cr = context.getContentResolver();
StringBuffer buff = new StringBuffer();
buff.append("(").append(MediaStore.Images.ImageColumns.DATA).append("=")
.append("'" + path + "'").append(")");
Cursor cur = cr.query(MediaStore.Images.Media.EXTERNAL_CONTENT_URI,
new String[] { MediaStore.Images.ImageColumns._ID },
buff.toString(), null, null);
int index = 0;
for (cur.moveToFirst(); !cur.isAfterLast(); cur.moveToNext()) {
index = cur.getColumnIndex(MediaStore.Images.ImageColumns._ID);
index = cur.getInt(index);
}
if (index == 0) {
} else {
Uri uri_temp = Uri
.parse("content://media/external/images/media/"
+ index);
if (uri_temp != null) {
uri = uri_temp;
}
}
}
}
return uri;
}
利用這個(gè)方法獲得的路徑就是正確的圖片路徑了,不止在小米手機(jī)上,在其他手機(jī)上也能用,其中參數(shù)intent是onActivityResult中的參數(shù)Intent data。
最后來(lái)張雍正的圖片鎮(zhèn)樓,專治bug(八阿哥),希望程序員少遇到點(diǎn)坑。

我最可愛
頭條號(hào)申請(qǐng)者 :飛奔的小付