ausgesetzt über app durch ClipData.Element.getUri
Hallo, ich versuche ein problem zu lösen, nachdem das neue feature im android-Dateisystem, aber ich bekomme diese Fehlermeldung:
android.os.FileUriExposedException: file:///storage/emulated/0/MyApp/Camera_20180105_172234.jpg ausgesetzt über app durch ClipData.Element.getUri()
So, ich hoffe jemand kann mir helfen, dieses Problem beheben 🙂
Dank
private Uri getTempUri() {
//Create an image file name
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd_HHmmss");
String dt = sdf.format(new Date());
imageFile = null;
imageFile = new File(Environment.getExternalStorageDirectory()
+ "/MyApp/", "Camera_" + dt + ".jpg");
AppLog.Log(
TAG,
"New Camera Image Path:- "
+ Environment.getExternalStorageDirectory()
+ "/MyApp/" + "Camera_" + dt + ".jpg");
File file = new File(Environment.getExternalStorageDirectory()
+ "/MyApp");
if (!file.exists()) {
file.mkdir();
}
imagePath = Environment.getExternalStorageDirectory() + "/MyApp/"
+ "Camera_" + dt + ".jpg";
imageUri = Uri.fromFile(imageFile);
return imageUri;
}
InformationsquelleAutor JonathanNet | 2018-01-05
Du musst angemeldet sein, um einen Kommentar abzugeben.
Fügen Sie folgenden code-block vor der Kamera-oder Datei-browsing
Das ist nicht der richtige Weg, um dieses Problem zu lösen, wird dies im Grunde entfernen Sie die strictmode-Richtlinien. und ignorieren Sie die Sicherheitswarnung
Es gibt einige vor-und Nachteile auf. Bitte beachten Sie die folgenden, um mehr Informationen stackoverflow.com/questions/18100161/...
Danke es ist toll arbeiten mit Antwort...!
Genie!!! vielen Dank
InformationsquelleAutor eranda.del
Sdk für 24 und, wenn Sie brauchen, um die Uri einer Datei, die außerhalb Ihrer app-Speicher haben Sie diesen Fehler.
@eranda.del-Lösungen können Sie die Politik ändern, um dies zu ermöglichen, und es funktioniert gut.
Allerdings, wenn Sie möchten, befolgen Sie die google-Richtlinie ohne änderung der API-Richtlinie der app müssen Sie ein FileProvider.
Zunächst um die URI einer Datei, die Sie verwenden müssen, FileProvider.getUriForFile () - Methode:
Dann müssen Sie Ihren provider in Ihrem android-manifest :
(In "Behörden" den gleichen Wert als das zweite argument der getUriForFile () - Methode (app Signatur + ".provider"))
Und schließlich müssen Sie zum erstellen der Ressourcen-Datei: "file_paths".
Diese Datei muss erstellt werden unter res/xml Verzeichnis (Sie wahrscheinlich benötigen, um dieses Verzeichnis zu) :
Dies sollte die korrekte Antwort akzeptiert!
"Machen Entwicklern das Leben leichter" - dies ist der Slogan für jede neue API, die Rechte von Google?
Die Lösung von Brendon ist richtig, aber es ist nicht copy-paste bereit, die Sie brauchen, um zu überprüfen, ob es Ihren Bedürfnissen entspricht, für die ex.
<external-path ...
wird verwendet, wenn Sie wollen, Umgebung.getExternalStorageDirectory(). und verwenden<files-path ...
wenn Sie brauchen Kontext.getFilesDir(). Sie besser überprüfen Sie die offiziellen docs ersten: developer.android.com/reference/android/support/v4/content/...Eine Erinnerung an, wenn Sie mit androidx (neue support-namespace) finden Sie hier (developer.android.com/reference/androidx/core/content/...) die ordnungsgemäße Dokumentation.
InformationsquelleAutor Brendon