java.lang.SecurityException: Berechtigungsverweigerung: Anbieter wird geöffnet

Ich starte die Image Picker-Absicht mit:

final Intent pickIntent = new Intent(Intent.ACTION_PICK, MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
pickIntent.putExtra(Intent.EXTRA_ALLOW_MULTIPLE, true);
startActivityForResult(intent, PICK_IMAGE);

und inonActivityResult() Ich erhalte eine Übersicht aller ausgewählten Bilder und starte Jobs, die im Hintergrund ausgeführt werden, und lade diese Bilder hoch https: //github.com/yigit/android-priority-jobqueu). Wenn ich jedoch die Zurück-Taste drücke und die Aktivität beende, kann jeder Auftrag, der nicht gestartet wurde, nicht auf das ausgewählte Bild zugreifen, wenn er ausgeführt wird und eine Ausnahme auslöst:

java.lang.SecurityException: Berechtigungsverweigerung: Öffnen des Providers com.google.android.apps.photos.contentprovider.MediaContentProvider aus ProcessRecord {...} (pid = 2407, uid = 10117), der nicht aus uid 10123 exportiert wird

Der Grund dafür ist, dass die Berechtigung widerrufen wird, sobald die Aktivität beendet ist. Laut dochttps: //developer.android.com/guide/topics/providers/content-provider-basics.htm:

Dies sind Berechtigungen für einen bestimmten Inhalts-URI, die so lange gültig sind, bis die Aktivität, die sie empfängt, abgeschlossen ist.

Meine Frage ist, gibt es eine Problemumgehung dafür? Möchtest du eine Erlaubnis auf Antragsebene oder so?

Was sind Alternativen, um dieses Problem zu lösen? Eine schnelle Lösung scheint darin zu bestehen, eine Kopie aller ausgewählten Bilder zu erstellen und diese dann hochzuladen, aber das scheint der letzte Ausweg zu sein.

Antworten auf die Frage(6)

Ihre Antwort auf die Frage