Warum kann ich in Jelly Bean 4.1.1 keine Kontakte mit Twitter/Facebook-Konten synchronisieren?

Mit meinem Samsung Galaxy Nexus kann ich meine Kontakte (von Google Kontakte) nicht mit denen von Twitter/Facebook synchronisieren.

Meine Konten sind aktiv, aber wenn ich auf „Jetzt synchronisieren“ tippe, passiert nichts. Es heißt "Letzte Synchronisierung am ...", aber die Kontakte werden nicht aktualisiert.

Übersehe ich etwas?

Antworten (1)

Weil Google es aus Marketinggründen deaktiviert hat (vielleicht um Google+ zu pushen?) Technisch gesehen ist es einfach nicht in der Whitelist in einer XML-Datei, um die Synchronisierung zu ermöglichen

Laut Niranjanthilak ist hier seine detaillierte Erklärung:

  • Die Facebook-Anwendung kann ihre Kontakte nur dann mit den Kontakten (Through ContactsProvider) synchronisieren, wenn sie im ROM auf der Whitelist steht (oder mit anderen Worten einen eskalierten Berechtigungssatz erhält).

  • Dazu müssen Sie die ContactsProvider.apk bearbeiten und die Whitelist-Berechtigung hinzufügen.

  • Zum Bearbeiten der ContactsProvider.apk (die sich im Verzeichnis /system/app/ befindet) benötigen Sie smali (ein Assembler/Disassembler für das dex-Format von Android).
  • Gehen Sie nach dem Disassemblieren von ContactsProvider.apk mit smali zum Ordner res/values/ ( in der disassemblierten Quelle ) und fügen Sie die Datei ( arrays.xml ) mit dem folgenden Inhalt hinzu:
<?xml version="1.0" encoding="UTF-8"?>
<resources>
    <string-array name="unrestricted_packages">
        <item>com.facebook.katana</item>
    </string-array>
</resources>
  • Die com.facebook.katana ist die Anwendung von Facebook. Nachdem Sie also die Datei „arrays.xml“ zum Ordner „/res/values/“ hinzugefügt haben, assemblieren Sie den ContactsProvider mithilfe von „smali“ in einer unsignierten apk-Datei.
  • Nun, seit ICS, Android 4.0, hat Google diese Bereitstellung von Whitelisting-Anwendungen nativ deaktiviert, daher haben sie bestimmte Felder aus der Datenbank verschleiert.
  • Fügen Sie die Spalte mit dem Namen hinzu
is_restricted

in die raw_contacts-Tabelle in contacts2.db (gespeichert in /data/data/com.android.providers.contacts/database/) - Wenn Sie sqlite (zusammen mit busybox) in Ihrem Kernel aktiviert haben, können Sie diesen Befehl zum Ändern der Datenbank verwenden und fügen Sie das erforderliche Feld hinzu, indem Sie es unter ADB Shell ausführen:

sqlite3 /data/data/com.android.providers.contacts/databases/contacts2.db
 'ALTER TABLE raw_contacts ADD COLUMN is_restricted VARCHAR';
  • Nach dem Hinzufügen der Spalte werden alle hinzugefügten Facebook-Konten mit der Synchronisierungsaufforderung versehen und unter den Kontakten angezeigt.
Danke. Das einzige Problem ATM ist, dass ich nicht root bin, also wird das nicht funktionieren :(