2017-11-15 2 views
0

abgerufen werden. Ich habe einen Blogger-Client erstellt, wo Sie Fotos aus der Galerie auswählen können, um in Blog-Posts einzubetten.Datei-Stream kann nicht auf Xiaomi

Aus irgendeinem Grund funktioniert es nicht auf Xiaomi-Handys auf den meisten Telefonen funktioniert es.

Ich empfange Dateien aus der Galerie auf diese Weise:

Intent i = new Intent(); 
i.setType("image/*"); 
i.setAction(Intent.ACTION_GET_CONTENT); 
i.addCategory(Intent.CATEGORY_OPENABLE); 

startActivityForResult(i, 2); 

Ich verwende folgenden werden die Bilder nach der Auswahl zu laden:

String imagePath=data.getData().ToString(); 
Uri fileURI = Uri.parse(imagePath); 
try { 
     fileInputStream = ((Context)mView).getContentResolver().openInputStream(fileURI); 
} catch (Exception e) { 
/* Send logs to analyse later */ 
} 

, die auf einigen Telefonen auf dem folgenden Fehler führt

Non-fatal Exception: java.io.FileNotFoundException: file:/storage/emulated/0/Download/FILE_NAME.png: open failed: ENOENT (No such file or directory) 
     at libcore.io.IoBridge.open(IoBridge.java:456) 
     at java.io.FileInputStream.(FileInputStream.java) 

Ich lasse nur den Benutzer versuchen, Dateien nach Erhalt der Erlaubnis auf Marsh auszuwählen Malve + Versionen, es ist also kein Erlaubnissproblem.

Es funktioniert auf 95 ish% der Benutzer, das ist etwas sehr Spezifisches. Versucht, das Problem auf 4.2, 4.4, 5.0.2, 7.0.2 auf LG G2, Huawei Nova, Nexus 7 und Emulator Bilder zu reproduzieren, konnte ich es nicht reproduzieren.

Irgendwelche Gedanken?

+0

'Uri-DateiURI = Uri.parse (imagePath);' ?? Bildpfad? Wenn Sie ACTION_GET_CONTENT verwenden, erhalten Sie dies nicht. – greenapps

+0

Entschuldigung, vergessen Sie den Rest des Codes. –

+0

Das war nicht mehr wichtig, denn vor fast einer Stunde gab ich dir eine Antwort, wie du es besser machen könntest. Sie hätten inzwischen auf meine Antwort reagieren können. – greenapps

Antwort

0

In onActivityResult() verwenden

InputStream is = getContentResolver().openInputStream(data.getData()); 

Versuchen Sie nicht, eine Datei zu finden.

Verwenden Sie den Eingabestream, als wäre es der Dateieingabestream.

Verwandte Themen