1

Ich habe alles über Content Providers recherchiert, aber ich kann nicht verstehen, wie andere auf dem Telefon installierte Apps auf die von mir bereitgestellten Inhalte zugreifen können. Wie können andere Apps möglicherweise wissen, was meine CONTENT_URIs sind ???Wie können andere Apps wissen, nach welchen Inhalten CONTENT_URI gesucht werden soll?

Ich mache eine Kontakte App. Wie können andere Apps die Kontaktdaten erhalten, die ich gespeichert habe? Es scheint unmöglich, dass eine andere App weiß, was ich für CONTENT_URI eingestellt habe. Beendet dies nicht den ganzen Zweck von Content Providing, wenn andere Apps im Grunde wissen müssen, was der geheime Schlüssel ist, den ich nur kennen würde?

Ich möchte, dass andere Apps meine Contact App-Daten sehen, statt meine zu ignorieren und nur auf die Kontakte-App für Daten zu schauen.

Warum würde Android den ContactsContract-Anbieter erstellen, wenn dies dazu führen würde, dass Entwickler damit Kontaktdaten erhalten, weshalb alle anderen Kontakte von Drittanbietern standardmäßig veraltet sind, weil andere Entwickler Code schreiben würden, um Kontaktdaten zu erfassen von der Lager-Android-Kontakt-App?

Android scheint nicht für mich zu bieten, um Daten zu anderen Apps mit dem ContactsContracts-Anbieter bereitzustellen. Aber von groben Android hat es sehr deutlich gemacht, einfach und ermutigt Entwickler, die Kontaktdaten verwenden, um ContactsContract zu verwenden.

Ist das ein eklatanter Power Grab? Die ganze Absicht meiner App "Kontakte" besteht darin, meine Kontaktdaten sicherer zu machen, sodass Google sie nicht mehr sammeln kann, wenn sie dies wünschen oder sonst jemand.

Bitte kann jemand beraten? Das kann unmöglich stimmen, ich hoffe, ich habe es hier falsch verstanden. Wieder nur FYI, ich habe nirgendwo auf der Android Developer-Seite etwas gefunden, das auf das Problem hinweist, das ich habe.

+0

Was wäre der Vorteil der Verwendung Ihrer Kontakte ContentProvider über den Lager Contents Storage ContentProvider? Warum sollte ich das als Benutzer oder als App-Entwickler haben? – Marten

+0

Ich würde sicherlich lieber den ContactsContract Provider verwenden, anstatt meinen eigenen zu erstellen, aber leider liegt das Problem dort. Ich bin offenbar nicht in der Lage, Kontaktdaten für andere Apps bereitzustellen, die mit der App auf Lager vergleichbar sind. Ich erstelle eine 100% Ersatz-Kontakt-App, in der Ihre Kontaktdaten sicherer sind.Außerdem denke ich, dass die Aktien-App hässlich und klobig ist und ich es besser machen kann. Ich WÜNSCHE meinen Providern, dass sie genau angeben, wie die Aktien-App funktioniert. Warum kann Androide die Dokumentation nicht veröffentlichen, wie ich das machen kann? Wie ist das fair? – JamisonMan111

+0

Warum schreibst du nicht einfach einen SyncAdapter und schreibst deine eigenen Daten in den Standard ContactsProvider? Sie können auch Ihre eigene Kontakt-App schreiben, die den Bestands-KontakteProvider verwendet. BTW, die Lager-Kontakte-Anwendung und die Lager-Kontakte-Speicherung sind 2 separate Apps. Die Bestandskontaktanwendung ist nur ein "Front-End" für den Bestandskontaktanbieter. Sie könnten einfach Ihr eigenes "Front-End" schreiben (wie andere zuvor). – Marten

Antwort

2

Dies ist definitiv kein Power Grab. Die Kontakte sind in das Betriebssystem eingebettet, da die Benutzer Telefone benötigen, um Telefonnummern zusammen mit einem Namen und anderen Informationen zu speichern, die dieser Telefonnummer zugewiesen werden sollen. Google macht nichts anderes als die Flip-Telefone, die es damals gab, außer dass die Benutzer ihre Kontakte mit der Cloud synchronisieren können. Dies ist jedoch nicht erforderlich. Ein Benutzer kann seinem Telefon einen Kontakt hinzufügen und es einfach dem Telefon zuordnen.

Mit der ContactsContract können Apps auf die auf dem Gerät gespeicherten Kontakte zugreifen. Dies ist nur möglich, nachdem der Benutzer der App den Zugriff auf ihre Kontakte erlaubt hat. Es gibt Apps, die diese Funktionalität verwenden, um als Kontaktmanager zu fungieren (Apps, die die Kontakte des Benutzers in einem anderen Layout anzeigen). Einige Apps bieten dem Benutzer die Möglichkeit, seine Kontakte online zu sichern, falls der Benutzer Google nicht verwenden möchte (z. B. FullContact). Die meisten Apps lesen Kontakte jedoch aus anderen Gründen, beispielsweise indem sie dem Nutzer helfen, Freunde/Bekannte/Mitarbeiter/etc zu finden, die ein Konto in ihrer App haben.

Um das Problem zu lösen, wie andere Entwickler das CONTENT_URI einer App realisieren, lesen sie die Dokumentation der Entwickler. Wenn Sie als Entwickler Inhalte bereitstellen, liegt es in Ihrer Verantwortung, die erforderliche Dokumentation zu veröffentlichen, damit andere Entwickler verstehen, wie mit Ihrer App zu arbeiten ist.

+0

Alle Kontaktdaten müssen nur in einer Datenbank gespeichert werden. Dann stellen die Content Provider es leicht zur Verfügung. Das ist das Android-Modell, das ich beim Lesen der Android Developer-Website gelernt habe. Ich verstehe genau, wie der ContactsContract-Anbieter funktioniert. Ich muss wissen, wie man es in meinem Code verwendet, um Daten bereitzustellen, nicht abzurufen. Google scheint das nicht zuzulassen? Warum sollte das sein? Vielen Dank für die Informationen zur Veröffentlichung meiner Anbieter für andere Entwickler. Ich hatte Angst, dass war meine einzige Option übrig und muss diese Route wählen – JamisonMan111

+0

@ JamisonMan111 Sie können Daten zur Verfügung stellen, indem Sie es in die Aktie Kontakte Provider schreiben. So machen es alle anderen Apps. Nichts für ungut, aber ich glaube nicht, dass Sie Android ContentProviders verstanden haben ODER ich habe immer noch nicht verstanden, was Sie erreichen wollen, was nicht mit dem Bestands-ContactsProvider möglich ist. – Marten

+0

Nichts für ungerechtfertigt, ich schätze deine Hilfe. Ich dachte, ich verstehe Content Provider, weil ich sie verwende, wenn auch nicht oft. Ich denke, ich sollte versuchen, meine Daten in ContactsContract zu schreiben, ich wusste nicht, dass das eine Option ist. Eines meiner Hauptanliegen war, dass ich meine Kontaktinformationen nicht mit dem Google-Konto am Telefon verbinden möchte. Mit einem Nexus 6, Android 5.1.1, gibt es keine Option mehr, Kontakte "lokal" zu behalten. Jeder Kontakt, den ich eingebe, ist jetzt Teil des Google-Kontos auf dem Telefon und ich möchte meine Informationen vertraulich behandeln. – JamisonMan111

Verwandte Themen