Android Uri.getPath() имеет /-1/1/ впереди

У меня проблема с тем, что Uri.getPath() включает /-1/1/, как показано ниже, Uri проникал внутрь

protected void onActivityResult(int reqCode, int resultCode, Intent data)

из ВЫБРАТЬ несколько изображений следующим образом

 ClipData.Item item = clipData.getItemAt(i);
 Uri uri = item.getUri();

Я пытаюсь получить файл из Uri, следующие образцы кодов всегда получают ошибку: FileNotFound

private void getImg(Uri uri){
    BitmapFactory.Options options = new BitmapFactory.Options();
    options.inJustDecodeBounds = true;
    BitmapFactory.decodeFile(new File(uri.getPath()).getAbsolutePath(), options);
    int imageHeight = options.outHeight;
    int imageWidth = options.outWidth;
    /....... some code ...

    // ArrayList<File> 
    mFile.add(new File(uri.getPath()); 
}



06-29 12:33:34.829 8160-8160/com.jinn.mutita.photoImx E/BitmapFactory: Unable to decode stream: java.io.FileNotFoundException: 
/-1/1/content:/media/external/images/media/15878/ORIGINAL/NONE/3385104: open failed: ENOENT (No such file or directory)

Однако, если я получу следующее и сохраню в локальный файл: это можно сделать.

InputStream input = thiscontext.getContentResolver().openInputStream(uri);

Но я могу сначала защитить входной поток локально, пожалуйста, помогите, у меня уже есть поиск, но я не уверен, что формат Uri был изменен или сейчас.

Как обрабатывать файл с путем из Uri? . Спасибо


person mutita k    schedule 29.06.2017    source источник


Ответы (1)


Я только что нашел это, и это решает проблемы из-за разрешения

Постоянное разрешение на доступ к хранилищу Android не предоставляется во время asyntask

person mutita k    schedule 11.07.2017