2014-06-12 16 views
9

Was ist der Grund für die Anbieter von Inhalten?android content provider BEHÖRDEN

Wie/warum möchte ich sie verwenden, außer dass ich sie im Manifest deklarieren muss?

Ich habe versucht, meine Hausaufgaben zu dieser Frage zu machen und kann keine anständige, zusammenhängende Diskussion zu diesem Thema finden. Hier ist das Beste, was ich (in additi auf die vier Bücher auf Android Entwicklung Ich besitze) finden konnte:

  1. https://stackoverflow.com/search?q=content+provider+authority
  2. Content Providers, Authority and and URI matching
  3. Get a list of available Content Providers
  4. http://developer.android.com/guide/topics/manifest/provider-element.html
  5. http://developer.android.com/guide/topics/providers/content-provider-creating.html
+1

wird verwendet, um bestimmte Anbieter e. G. content: //your.authority – pskink

Antwort

15

Die Behörde wird verwendet, um w zu interagieren Mit einem bestimmten Inhaltsanbieter, das heißt, es muss eindeutig sein. Deshalb ist ein good practice, um es als Ihr Domain-Name (in umgekehrter Reihenfolge) plus den Namen des Pakets mit dem Anbieter zu deklarieren, auf diese Weise ist weniger wahrscheinlich, dass andere Entwickler eine App mit einem Content-Provider der gleichen Behörde zu erstellen erstellt.

content://authority-name/data-in-the-provider 

Es funktioniert ähnlich wie Domains in:

Sie erklären es im Manifest so Ihre Anwendung und andere Anwendungen (wenn Sie es zulassen) können Daten über Ihren Content-Provider in Form eines uri manipulieren http Urls:

http://domain-name/data-in-the-site 
+0

also heißt das, wenn ich mehrere Provider in meiner App habe sollte jeder in seinem eigenen Paket sein? –

+0

Die Behörden müssen für jeden Inhaltsanbieter eindeutig sein – ILovemyPoncho

+0

Einfache und doch leistungsstarke Erklärung ohne jeden bla bla code. – Nirmal

1

ich auch zur Erklärung suchen und hinzufügen von ILovemyPoncho zur Verfügung gestellt zu beantworten, schlug ich diese besonderen answer und ich zitiere:

und was genau ist Android: Behörden fragen?

Eine systemweit eindeutige Kennung für Ihren Provider. Oder besser weltweit einzigartig. Alle Anbieter sind mit dem System registriert und müssen einmalig sein oder die zweite App, die denselben Namen verwenden möchte, kann nicht installiert werden.

Sie verwenden diese Zeichenfolge am Ende mit Ihrem Provider über eine Uri wie

Uri uri = Uri.parse zu kommunizieren ("Inhalt: //" + "your.authoritiy.string")

Sagen wir es so: Es gibt eine unsichtbare Hand, die Ihre Anfrage an den ContentProvider Ihrer App erleichtert.

Zum Beispiel:

Uri uri = mContext.getContentResolver().insert(NotifireContentProvider2.NOTE_URI, values); 

Im Grunde, was Sie hier auf die Android OS sagen, ist Einfügungsdaten der URI gegeben, welche die Behörde in der XML definiert haben. Das Betriebssystem sucht nach diesem bestimmten Inhaltsanbieter und sendet die Anfrage an ihn.Sie insert Methode für den ContentProvider wird aufgerufen und Sie müssen den URI entsprechen, um es entsprechend zu behandeln.

Auch, was ist, wenn Sie Content-Provider ist so einfach, dass andere ähnliche Autorität haben. Ich bin nicht auf diese beiden Probleme gestoßen, die ich erwähnt habe, aber ich denke, es wird nicht angenehm sein.

Stellen Sie sicher, dass das Betriebssystem erkennt, welcher Anbieter die Daten an die anfordernde App sendet, und stellt sicher, dass der Anbieter sie bereitstellt.

Verwandte Themen