2016-11-01 5 views
1

Ich bin auf einem wirklich kniffligen Problem fest. Kontext: Meine App ist zum Öffnen von Dateien mit einer speziellen Erweiterung (z. B. myFile.png.myapp)Dateien heruntergeladen haben keine Erweiterung auf einigen Geräten

Wenn ich es von meinem Server mit Chrome herunterladen, wird es gut herunterladen und ich bekomme eine "open" -Prompt und löst meine App, aber der Pfad in der Absicht ist in der Form content: // downloads/my_downloads/2136.

Keine Erweiterung.

Aus verschiedenen Gründen kann der einzige MimeType, den ich senden kann, application/octet-stream sein, also kann ich nicht wissen, dass diese Datei tatsächlich ein PNG ist.

Wenn ich auf die Benachrichtigung klicke, dass die Datei heruntergeladen wird, funktioniert es gut.

Das passiert nur im Moment auf Nexus 5 mit Android 6.0.1, auf jedem anderen Gerät, bekomme ich den tatsächlichen Dateinamen und es läuft reibungslos.

Ich habe sowohl Manifest als auch in App-Berechtigungen eingerichtet.

Meine Untersuchung führt mich zu der Annahme, dass es an der Helpers-Klasse im DownloadProvider-Paket liegt, aber ich bin mir nicht sicher.

Kann jemand helfen?

Prost

Antwort

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

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

Danke, aber wie gesagt, die Mimetype immer application/octet-stream sein, so dies keine zusätzliche Informationen gibt. – Tom

+0

Nein. Sie sagten 'der einzige MimeType, den ich senden kann, ist application/octet-stream'. Und das Senden ist etwas anderes als das Bestimmen, wie es hier gemacht wird. Wenn Chrome also herunterlädt, was senden Sie dann? – greenapps

+0

Aber Sie können DocumentFile für die uri und dann DocumentFile.getName() verwenden, die Ihnen den ursprünglichen Dateinamen gibt. – greenapps

Verwandte Themen