簡體   English   中英

在Android中獲取圖像路徑

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM