2016-11-01 2 views
1

정말 까다로운 문제에 봉착했습니다. 컨텍스트 : 내 응용 프로그램은 특별한 확장자 (예 : myFile.png.myapp)의 파일을 열 수 있도록 만들어졌습니다.다운로드 된 파일에 일부 장치의 확장명이 없습니다.

Chrome을 사용하여 서버에서 다운로드 할 때 정상적으로 다운로드되고 "열린"프롬프트가 나타나고 app의 경우 인 텐트의 경로는 content : // downloads/my_downloads/2136 형식입니다.

확장자가 없습니다.

여러 가지 이유로 내가 보낼 수있는 MimeType은 application/octet-stream뿐이므로 파일이 실제로 png라는 것을 알 수있는 방법이 없습니다.

파일을 다운로드 한 알림을 클릭하면 정상적으로 작동합니다.

Nexus 5에서 Android 6.0.1을 실행하는 순간에만 다른 모든 기기에서 실제 파일 이름이 표시되고 원활하게 실행됩니다.

매니페스트 및 앱 내 권한을 모두 설정했습니다.

내 조사 결과, DownloadProvider 패키지의 Helpers 클래스 때문인 것으로 판단됩니다. 그러나 확실하지 않습니다.

누구든지 도와 줄 수 있습니까?

건배

답변

0
String path = "content://downloads/my_downloads/2136"; 

String mimeType = getContentResolver().getType(Uri.parse(path)); 
+0

감사합니다,하지만 내가 말했듯이 추가 정보를 제공하지 않도록, MIME 형식은 항상 응용 프로그램/octet-stream을 할 것이다. – Tom

+0

아니요. 제가 보낼 수있는 유일한 MimeType은 애플리케이션/옥텟 스트림입니다. 그리고 보내는 것은 여기에서 한 것과 다른 결정입니다. 그래서 크롬이 다운로드한다면 당신은 무엇을 보내고 있습니까? – greenapps

+0

하지만 uri에 DocumentFile을 사용하고 원래 파일 이름을 제공하는 DocumentFile.getName()을 사용할 수 있습니다. – greenapps

관련 문제