Android

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” 역시 테스트 해보았으나 여전히 파일을 선택할 수 없습니다. 

 


LG G7에서 발생한 선택불가 문제

 

코드 스니펫은 다음과 같습니다.

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

 

Leave a Reply

error: Content is protected !!