Android 10, 11에서 sqlite db백업 파일의 MIME 타입은 ?? 특정 스마트폰에서 파일을 선택할 수 없는 경우가 발생합니다.
앱에서 DB 파일 가져오기 또는 내보내기 기능을 구현하고 있습니다. mime-type 으로 application/x-sqlite3 설정하였습니다. 일부 스마트폰에서 파일 가져오기를 할 때 Sqlite db 백업 파일이 회색으로 표시되며, 선택할 수 없는 상태인 경우가 발생 됩니다. 안드로이드 11이 설치된 픽셀2폰에서는 정상적으로 동작합니다.
그러나 안드로이드 10이 설치된 LG G7에서는 선택할 수 없는 상태입니다. LG 폰에서 기본적으로 제공하는 파일탐색기 문제가 아닌가 하는 생각을 해봅니다.
DB 파일을 선택할 수 없음으로 LG G7폰에서는 복구 기능을 구현할 수 없습니다.
MIME 타입으로 “application/vnd.sqlite3”, “application/octet-stream” 역시 테스트 해보았으나 여전히 파일을 선택할 수 없습니다.
코드 스니펫은 다음과 같습니다.
private void restoreDB(){
Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT); //ACTION_GET_CONTENT
intent.addCategory(Intent.CATEGORY_OPENABLE);
intent.setType("application/*");
String[] mimeTypes = new String[]{
"application/x-binary"
,"application/octet-stream"
,"application/vnd.sqlite3"
,"application/x-sqlite3"};
intent.putExtra(Intent.EXTRA_MIME_TYPES, mimeTypes);
startActivityForResult(intent, 1212);
}
해결방법으로
intent.setType("*/*"); 사용 하면 모든 파일에 접근 가능하게 됨으로 백업한 DB 파일에 액세스 할 수 있습니다.
private void restoreDB(){
Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT); //ACTION_GET_CONTENT
intent.addCategory(Intent.CATEGORY_OPENABLE);
intent.setType("*/*");
startActivityForResult(intent, 1212);
}
만약 모든 파일을 선택 가능하게 만들고 싶지는 않은 경우, sqlite DB 파일 만 필터링하고 싶은데 방법이 있을까요?
[REFERENCE]
https://www3.sqlite.org/src/mimetype_list
http://fileformats.archiveteam.org/wiki/SQLite