[英]Get image path in Android
當我從畫廊挑選照片時,他們會收到下一個uri
content://com.google.android.apps.photos.content/0/https%3A%2F%2Flh3.googleusercontent.com%2F1cSCAm2mqyFgOUPR8d_8Modz0Cgu6yn1nsznrhfzQTw%3Ds0-d
而不是像
content://media/external/images/media/3728
我無法獲得此圖像的路徑。 我該如何解決這個問題?
我的代碼:
case RC_SELECT_PICTURE:
Uri pickedImage = data.getData();
// Let's read picked image path using content resolver
String[] filePath = { MediaStore.Images.Media.DATA };
Cursor cursor = getActivity().getContentResolver().query(pickedImage, filePath, null, null, null);
cursor.moveToFirst();
String imagePath = cursor.getString(cursor.getColumnIndex(filePath[0]));
cursor.close();
break;
我嘗試使用在StackOverflow上找到的一些方法來獲取filePath
,但是此路徑為url。 我可以使用它下載圖像。 我需要獲取本地filePath
。
Uri
從未必須映射到File
路徑 。
現在,事實證明MediaStore
泄漏了路徑,並且一些白痴提倡使用這些泄漏的模式,導致許多開發人員認為這是可靠的行為。 不是。 ContentProvider
可以提供各種流,而不是由您有權訪問的文件支持,例如將文件放在內部存儲中。
如果您想要此Uri
指向的圖像的內容,或者想知道其MIME類型,請使用ContentResolver
。
試試這個可能會幫助你
從圖庫中選擇圖片時,請檢查Android SDK版本。
if (Build.VERSION.SDK_INT <19){
Intent intent = new Intent();
intent.setType("image/*");
intent.setAction(Intent.ACTION_GET_CONTENT);
startActivityForResult(Intent.createChooser(intent, getResources().getString(R.string.select_picture)),GALLERY_INTENT_CALLED);
} else {
Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT);
intent.addCategory(Intent.CATEGORY_OPENABLE);
intent.setType("image/*");
startActivityForResult(intent, GALLERY_KITKAT_INTENT_CALLED);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.