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