Bei Verwendung des Android-Dateianbieters sind die Berechtigungen für Dateien nicht korrekt, obwohl FLAG_GRANT_WRITE_URI_PERMISSION in der Absicht markiert ist
Ich versuche, Dokumente aus Dateien in meiner App mit Microsoft Word- und PDF-Viewern zu laden, und verwende einen FileProvider, um Android 7.0+ zu verarbeiten, bei dem die Datei-URIs nicht frei weitergegeben werden können. Ich erhalte die URI wie folgt und setze die Intent-Flags, damit vor dem Öffnen gelesen und geschrieben werden kann:
// From the byte array create a file containing that data, and get extension and MIME type.
File fileToOpen = byteArrayToFile(documentData, shortFileName);
String fileExtension = UtilityMethods.getFileExtension(fileToOpen.getName());
String mime = MimeTypeMap.getSingleton().getMimeTypeFromExtension(fileExtension);
// Get the Uri for the file from the file provider, open using intent.
Uri documentUri = FileProvider.getUriForFile(getContext(), "com.mycompany.provider", fileToOpen);
Intent intent = new Intent();
intent.setDataAndType(documentUri, mime);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
intent.addFlags(Intent.FLAG_GRANT_WRITE_URI_PERMISSION);
intent.setAction(Intent.ACTION_VIEW);
startActivity(intent);
Wenn die Datei in MS Word geladen wird, ist die Datei schreibgeschützt und kann nicht bearbeitet werden. Dies ist jedoch nicht das gewünschte Verhalten. Wo gehe ich falsch?