Я создаю приложение, которое позволяет пользователю делать «графические» заметки.У меня возникла проблема при попытке сохранить растровое изображение в моем пользовательском ContentProvider (NotesProvider расширяет ContentProvider).Согласно Google devGuide должен переопределить метод openFile (Uri uri, String mode).И я получил ошибку: файл не найден.Я просматриваю эту проблему и получаю решение здесь .Затем я строю свое представление так:
public ParcelFileDescriptor openFile(Uri uri, String mode) throws FileNotFoundException {
if(sUriMatcher.match(uri)!=NOTE_ID)
throw new IllegalArgumentException("Unsupported open file on directori uri " +uri);
File root = new File(Environment.getDataDirectory(),
BITMAPS_PATH);
root.mkdirs();
File path=new File(root, uri.getEncodedPath());
int imode = 0;
if (mode.contains("w")) {
imode |= ParcelFileDescriptor.MODE_WRITE_ONLY;
if (!path.exists()) {
try {
path.createNewFile();
} catch (IOException e) {
// TODO decide what to do about it, whom to notify...
e.printStackTrace();
}
}
}
if (mode.contains("r")) imode |= ParcelFileDescriptor.MODE_READ_ONLY;
if (mode.contains("+")) imode |= ParcelFileDescriptor.MODE_APPEND;
return ParcelFileDescriptor.open(path, imode);
}
, и приложение имеет IOException
12:42:12.714 2550 WARN System.err java.io.IOException: No such file or directory