Hallo zusammen,
ich versuche eine Datei zu öffnen und anzuzeigen.
Der Pfad der Datei kommt aus meiner App eigenen Datenbank.
Die Datei existiert nachweislich und lässt sich über ein "Intent.ACTION_OPEN_DOCUMENT" problemlos öffnen und anzeigen!
Die selbe Datei lässt sich jedoch nicht öffnen und anzeigen wenn ich nicht zuvor "Intent.ACTION_OPEN_DOCUMENT" verwende.
bei folgendem Code habe ich Probleme mit den Berechtigungen:
Uri myUri = Uri.parse("content://com.android.externalstorage.documents/document/primary%3ANoten_MVP%2FBariton%2Test.pdf");
Intent target = new Intent(Intent.ACTION_VIEW);
target.setDataAndType( myUri, "application/pdf");
Intent.FLAG_GRANT_WRITE_URI_PERMISSION|Intent.FLAG_GRANT_PREFIX_URI_PERMISSION);
Intent intent = Intent.createChooser(target, "Open PDF using");
try {
startActivity(intent);
} catch (ActivityNotFoundException e) {
// Instruct the user to install a PDF reader here, or something
Toast.makeText(this, "No Applications found to open pdf", Toast.LENGTH_SHORT).show();
}
}
Alles anzeigen
Folgende Fehlermeldungen erhalte ich dabei:
Caused by: java.lang.SecurityException: UID 10138 does not have permission to content://com.android.externalstorage.documents/document/primary%3ANoten_MVP%2FBariton%2Test.pdf [user 0]; you could obtain access using ACTION_OPEN_DOCUMENT or related APIs
......
......
Caused by: android.os.RemoteException: Remote stack trace:
at com.android.server.uri.UriGrantsManagerService.checkGrantUriPermission(UriGrantsManagerService.java:1174)
at com.android.server.uri.UriGrantsManagerService.checkGrantUriPermissionFromIntent(UriGrantsManagerService.java:591)
at com.android.server.uri.UriGrantsManagerService.grantUriPermissionFromIntent(UriGrantsManagerService.java:617)
at com.android.server.uri.UriGrantsManagerService$LocalService.grantUriPermissionFromIntent(UriGrantsManagerService.java:1379)
at com.android.server.wm.ActivityStarter.startActivityUnchecked(ActivityStarter.java:1691)
in der AndroidManifest habe ich folgendes
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.ACCESS_MEDIA_LOCATION" />
Wie kann ich die fehlende Berechtigung bekommen?[/b]