为图像描述写入Exif数据时为NotFileFound;读书很好

时间:2018-07-05 20:56:14

标签: java android exif

这是我读取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()。它会引发相同的错误。

编辑

我添加了写许可权(我不知道如何制作弹出对话框):

<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...

以下是网址和路径: enter image description here

这是调试时的错误消息:

enter image description here

EDIT2

我想进一步解释我的问题,因为我仍然没有找到任何答案。我希望有人能帮助我。因此,当用户选择照片时,便获得了我用来从中获取文件的uri。我试图构造exifInterface,例如:new ExifInterface(file.get.getAbsolutePath())。还是一样的错误。

0 个答案:

没有答案