6

Ich habe einen benutzerdefinierten Kontotyp erstellt, und ich kann erfolgreich Kontakte dieses Typs im Androiden ContactsContract ContentProvider erstellen. Aber ich habe viel Mühe herauszufinden, wie ich mein benutzerdefiniertes Konto-Label und -Symbol bei der Bearbeitung des Kontakts in der Standard-Kontakte-App anzeigen lassen kann.Wie kann ich meinen benutzerdefinierten Kontotyp in der Android-Kontakte-App anzeigen lassen?

Wenn Sie einen benutzerdefinierten Kontakttyp bearbeiten, sollte das Label etwa "Kontakt" sein, mit dem Symbol Ihrer App auf der rechten Seite. Stattdessen wird beim Bearbeiten von Kontakten meines Typs immer die Bezeichnung "Nur Telefon, nicht synchronisierter Kontakt" angezeigt. Ein Beispiel finden Sie im ersten Screenshot.

Das komische Ding ist, dass es meinen Kontonamen aufnimmt, den Sie im Screenshot unter dem falschen Aufkleber sehen können (er beginnt mit "+1415").

Und ich habe erfolgreich das Label und das Symbol meiner App in den Einstellungen App unter Konten gezeigt, damit ich weiß, dass ich etwas richtig mache. Siehe den zweiten Screenshot unten für den Beweis (das Konto-Label ist "Bolt").

Editing a custom contact in the Android contacts appSettings app with custom account label and icon

Ich habe folgendes authenticator.xml:

<account-authenticator xmlns:android="http://schemas.android.com/apk/res/android" 
    android:accountType="@string/account_type" 
    android:label="@string/app_name" 
    android:icon="@drawable/app_icon" 
    android:smallIcon="@drawable/app_icon" /> 

Und das ist mein syncadapter.xml:

<sync-adapter xmlns:android="http://schemas.android.com/apk/res/android" 
    android:contentAuthority="@string/contacts_content_authority" 
    android:accountType="@string/account_type" 
    android:userVisible="true" 
    android:allowParallelSyncs="false" 
    android:isAlwaysSyncable="true" 
    android:supportsUploading="false" /> 

Kann mir jemand zeigen auf, wohin ich gehe falsch damit? Ich kann mehr Informationen zur Verfügung stellen, wenn nötig. Ich habe versucht, den Kontakt aus meinem SyncAdapter mit dem CLIENT_IS_SYNCADAPTER-Parameter zu erstellen, aber das hat nichts geändert. Ich habe auch ein paar andere Dinge ausprobiert, aber nichts hat noch funktioniert.

Antwort

3

Ich endlich herausgefunden, was das Problem war.

In meinem sync-adapter-Element wurde das Attribut android:contentAuthority auf eine benutzerdefinierte Inhaltsberechtigung für meine eigenen Kontakte ContentProvider festgelegt, was technisch ist, was ich zum Abfragen und Schreiben von Kontaktdaten verwenden. Es stellt sich jedoch heraus, dass Ihre Kontakte in der Standard-App für Kontakte angezeigt werden. Dieses Attribut muss auf "com.android.contacts" festgelegt werden.

+0

Werden Ihre synchronisierten Kontakte weiterhin als "Nur-Telefon, nicht synchronisierter Kontakt" angezeigt? Weil, als ich die android: contentAuthority-Deklaration für meinen SyncAdapter per Antwort änderte, konnte ich meinen Kontotyp in der Kontakte-App sehen, aber Kontakte, die von meiner App synchronisiert wurden, wurden noch in der Kontakt-App als "Telefon- nur, nicht synchronisiert ". –

+0

Ich dachte nicht, dass das immer noch ein Problem ist, aber um sicher zu sein, habe ich überprüft und bestätigt, dass meine Kontakte nicht mehr "Nur-Telefon, unsynchronisierter Kontakt" zeigen. Vielleicht hat das mit CLIENT_IS_SYNCADAPTER zu tun, wenn ich einfüge/aktualisiere? – amb