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?

Antworten auf die Frage(0)

Ihre Antwort auf die Frage