2016-06-01 5 views
0

Ich möchte auf den Inhaltsanbieter mithilfe von URI zugreifen, der die folgende Form hat.Zugriff auf Inhaltsanbieter

sUriMatcher.addURI("org.abcd.providers.contentprovider", "bookmarks", 1) 

So kann ich auf den URI "Inhalt: //org.abcd.providers.contentprovider/bookmarks"? Was bedeutet der Wert "1"? Wie frage ich den Anbieter dieses Typs, Vielen Dank im Voraus.

Antwort

1

Die "1" wird intern im ContentProvider verwendet. Es wird verwendet, um einen URI mit einer Nummer zu verknüpfen. Praktisch für die Verwendung in einer switch-Anweisung.

Warum nicht String-Matching? Nun, ein URI könnte variable Teile haben. Zum Beispiel "content: //my.provider/bank/customer/2". Die 2 ist die ID des Kunden. Oder "content: //my.provider/location/42/name". Der variable Teil hier ist der 42. String-Matching geht hier außer Kontrolle. Der UriMatcher hingegen kann Beispiel 1 mit addURI ("my.provider", "bank/customer/#", 1) und Beispiel 2 mit addURI ("my.provider", "location/#/name") verbinden , 2). Wenn wir einen konfigurierten UriMatcher auffordern, einen URI zu finden, gibt er die Nummer zurück, die dem passenden URI zugeordnet ist.

Aber wir gehen hier aus der Spur. Die Nummer ist für Sie als Verbraucher nicht relevant. Sie können den Provider mit der Kontextmethode 'getContentResilver() .query (content: //org.abcd.providers.contentprovider/bookmarks,/* andere Argumente * /)' abfragen. Weitere Informationen finden Sie unter the documentation.

Aber Sie können nur mit dem Anbieter sprechen, wenn es exportiert wird (nichts, was Sie dagegen tun können) oder es erfordert Berechtigungen, die Ihre Anwendung hat. Dies beinhaltet überhaupt keine Berechtigungen.

+0

Vielen Dank für die Erklärung! – lifeisgooddd