0
私は "グラフィック"ノートを作ることができるアプリケーションをビルドします。 BitmapをカスタムContentProvider(NotesProviderがContentProviderを拡張)に保存しようとしたときに問題が発生しました。 GoogleのdevGuideによると、openFile(Uri uri、String mode)メソッドをオーバーライドする必要があります。そして私はエラー:ファイルが見つかりません。 私はこの問題を見て、解決策hereを得ます。私はそうコンテンツプロバイダのファイルストレージなしこのようなファイルやディレクトリはありません
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
ありがとうございました!エミュレータ上にディレクトリが存在しましたが、uri.getEncodedPath()にファイル名だけでなく、この修正でコードを変更しても問題はありませんでした。 – Kirill