NotFileFound при записи данных Exif для описания изображения; чтение в порядке - PullRequest
0 голосов
/ 05 июля 2018

Вот как я читаю exif-данные, все отлично работает:

InputStream in;
        String description;
        try{
            in=getContentResolver().openInputStream(uri);
            ExifInterface exifInterface=new ExifInterface(in);
            description=exifInterface.getAttribute(ExifInterface.TAG_IMAGE_DESCRIPTION);
            exif.setText(description);
        }catch(IOException e){
            e.printStackTrace();
        }//catch

Вот как я это пишу, но в строке, содержащей конструктор ExifInterface, выдается исключение FileNotFoundException:

public boolean onEditorAction(TextView textView, int actionId, KeyEvent keyEvent) {
    boolean handled=false;
    if(actionId== EditorInfo.IME_ACTION_SEND){
        String decription=input.getText().toString();
        try {
            input.setText("");
            File file=new File(uri.toString());
            ExifInterface exifInterface=new ExifInterface(file.getCanonicalPath());
            exifInterface.setAttribute(ExifInterface.TAG_IMAGE_DESCRIPTION, decription);
            exifInterface.saveAttributes();
            exif.setText(decription);
        }catch(IOException e){
            e.printStackTrace();
        }catch(NullPointerException e){
            Toast.makeText(this,"Select a photo first!",Toast.LENGTH_SHORT).show();
        }
        handled=true;
    }
    return handled;
}

Я попробовал Uri.getPath (). Выдает ту же ошибку.

EDIT

Я добавил разрешение на запись (я не знаю, как сделать всплывающее диалоговое окно):

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="zoom2.david.com.exif">
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"
    android:maxSdkVersion="18"/>
<application...

Вот URL и путь: enter image description here

Вот сообщение об ошибке при отладке:

enter image description here

EDIT2

Я хочу подробнее объяснить свою проблему, потому что я до сих пор не нашел ответа на нее. Я надеюсь, что кто-то может мне помочь. Итак, этот URI, из которого я получаю файл, получается, когда пользователь выбирает фотографию. Я пытался построить exifInterface как: new ExifInterface(file.get.getAbsolutePath()). Тем не менее, та же ошибка.

...