#첨부파일이 안열린다.
-MIME-Type을 잘 지정해도 해결되지 않는다.
-pdf 파일만 열린다.(엑셀, 워드, ppt, hwp, txt 안열림)
-OS 특성은 아니다.
-모바일 브라우저에서 URL을 직접 입력후 다운받은 파일은 정상으로 열린다.
-> 다운받을 때 잘못된 것 같다.
게시물에 문서 첨부파일이 있으면 리사이클러뷰로 출력하고, 항목을 클릭했을 때 다운받아서 뷰어로 연결하는 기능을 구현했다.
인텐트에 확장자 별 MimeType을 싣어주어야 한다.
그래서 난 Utility 클래스에 파일의 확장자명을 추출하고, 확장자 별 Mime Type을 리턴하는 메서드를 구현했다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41 |
String mimeType = Utility.getMimeType(
Utility.getOnlyExtension(Uri.fromFile(file).toString())
);
### Utility class ###
/**
* 첨부파일 Uri로부터 파일 확장자명을 리턴합니다.
*/
public static String getOnlyExtension(String fullUri) {
int fileIndex = fullUri.lastIndexOf(".");
return fullUri.substring(fileIndex + 1, fullUri.length());
}
/**
* 파일 확장자별 Mime-Type을 리턴합니다.
*/
public static String getMimeType(String extensionStr) {
switch (extensionStr) {
case "doc" :
case "docx" :
return "application/msword";
case "xls" :
case "xlsx" :
return "application/vnd.ms-excel";
case "ppt" :
case "pptx" :
return "application/vnd.ms-powerpoint";
case "pdf" :
return "application/pdf";
case "hwp" :
return "application/haansofthwp";
case "txt" :
return "text/plain";
}
return "";
} |
cs |
하.지.만!!
이미 안드로이드는 이러한 경우를 대비하여 전용 클래스를 만들어놓았다.
윽 검색해볼걸!!!! 좋은 경험이었다.
MimeTypeMap 클래스에는 확장자명과 MimeType을 추출해주는 메서드가 있다.
실수하기 딱 좋은 경우가 있다.
MimeType을 추출하는 함수는 MimeTypeMap 객체를 통해서 사용해야하는데
확장자명을 추출하는 함수는 static이다.
대충 문서보고나서 구현했다가 계속 getFileExtensionFromUrl()가 null을 리턴해서 헛짓했다 ㅜㅜ
1
2
3 |
MimeTypeMap mimeTypeMap = MimeTypeMap.getSingleton();
String extension = MimeTypeMap.getFileExtensionFromUrl(Uri.fromFile(file).toString());
String mimeType = mimeTypeMap.getMimeTypeFromExtension( extension ); |
cs |
'Android > Knowhow' 카테고리의 다른 글
안드로이드 이미지나 사진이 돌아갈때, 회전현상 해결법 LG G4 (0) | 2017.03.07 |
---|---|
LinearLayout background에 selector 입혀주기 (0) | 2017.02.24 |
안드로이드 다운로드매니저 다운로드 실패했는데 뷰어에서 보인다. (0) | 2017.02.21 |
안드로이드 이미지가 돌아갈 때, 회전될 때! Exif 메타정보 이용하기 (0) | 2017.02.17 |
android studio - 포토샵없이 material design의 앱 아이콘 쉽게 만들기 (0) | 2017.02.16 |