0
나는 사용자가 "그래픽"노트를 작성할 수있는 응용 프로그램을 작성합니다. 비트 맵을 내 사용자 정의 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);
}
및 응용 프로그램처럼 내 표현을 구축는
12:42:12.714 2550 WARN System.err java.io.IOException: No such file or directory
정말 고마워요! 에뮬레이터에 존재하는 디렉토리가 있지만 문제가 uri.getEncodedPath() 파일 이름 일뿐만 아니라,이 수정 프로그램으로 내 코드를 변경하고 작동합니다. – Kirill