0

Ich möchte einen DocumentsProvider erstellen, um den angegebenen Ordner zu verwalten. Ich brauche eine andere App, um diesen DocumentsProvider zum Durchsuchen/Verwalten der Dateien in dem Ordner zu verwenden.Wie kann ich direkt in der App auf DocumentsProvider zugreifen, ohne Absicht zu verwenden?

Ich sah viele Beispielcode, der intent und startActivity verwendet, dann DocumentsUI verwenden, um URI zu erhalten. Ist es möglich, direkt über meine App auf DocumentsProvider zuzugreifen und ohne Vorsatz?

Ich habe versucht, feste URI für meine DocumentsProvider verwenden, und versuchte, DocumentsContract verwenden, um darauf zuzugreifen, aber es wird "SecurityException: Keine persistente Berechtigungshilfen für UID und Uri gefunden". Ich habe auch zuerst grantUriPermission() verwendet, aber es hilft nicht.

Gibt es eine Möglichkeit, auf DocumentsProvider mit festen (vordefinierten) URI statt der URI aus zurückgegebenen Absicht zuzugreifen?

+0

'sah viele Beispielcode, die DocumentsUI aufrufen. Frage mich, was du damit meinst. Kannst du ein Beispiel geben? – greenapps

+0

Der Punkt von "DocumentsProvider" ist, dass diese Dokumente über das Storage Access Framework (z. B. "ACTION_OPEN_DOCUMENT") für andere Apps zugänglich sind. Wenn das nicht gewünscht ist, implementieren Sie keinen 'DocumentsProvider'. Wenn Sie die 'ACTION_OPEN_DOCUMENT'-Unterstützung und * auch * direkt mit dem' DocumentsProvider' arbeiten möchten, können Sie versuchen, 'DocumentsContract' zu verwenden, aber ich weiß nicht, wie Ihre Client-Anwendung die Erlaubnis erhält, mit den Dokumenten zu arbeiten. – CommonsWare

+0

Ja, ich habe das versucht, aber erhalte das Erlaubnisproblem, wie du gesagt hast. –

Antwort

0

Wie CommonsWare in dem Kommentar sagte, Sie versuchen wahrscheinlich, eine Sache zu verwenden, die für einen anderen Zweck ist, aber es ist nicht unmöglich zu erreichen, was Sie sagten.

Es scheint, Sie besitzen beide Apps, so können Sie sie die gleiche UID teilen lassen, indem Sie sharedUserId zuweisen, und Sie sollten in der Lage sein, mit dem DocumentsProvider zu sprechen.

Alternativ können Sie eine spezielle Aktivität in der App definieren, die den DocumentsProvider besitzt, wo sie der anderen App URI-Berechtigungen erteilt. Dann sollten Sie in der Lage sein, darauf zuzugreifen. Obwohl Sie nicht sicher sind, ob dies das ist, was Sie wollen, weil Sie immer noch eine Absicht starten müssen, um eine Nicht-UI-Aktivität zu starten.

Verwandte Themen