1 votes

Pourquoi je ne peux pas synchroniser les contacts avec les comptes Twitter/Facebook dans Jelly Bean 4.1.1 ?

Avec mon Samsung Galaxy Nexus, je ne peux pas synchroniser mes contacts (de Google Contacts) avec ceux de Twitter/Facebook.

Mes comptes sont opérationnels, mais lorsque je touche "Sync Now", rien ne se passe. Il est indiqué "Dernière synchronisation le ..." mais les contacts ne sont pas mis à jour.

Est-ce que je rate quelque chose ?

1voto

Underlines Points 686

Parce que Google l'a désactivé pour des raisons de marketing (pour promouvoir Google+ peut-être ?). Techniquement, il n'est simplement pas dans la liste blanche dans un fichier xml pour permettre la synchronisation.

Según niranjanthilak Voici son explication détaillée :

  • L'application Facebook ne peut synchroniser ses contacts avec les contacts (par le biais de ContactsProvider) que si elle figure sur une liste blanche (ou, en d'autres termes, si elle bénéficie d'un ensemble de permissions élargies) dans le ROM.

  • Pour cela, vous devez modifier le fichier ContactsProvider.apk et ajouter la permission de liste blanche.

  • Pour modifier le fichier ContactsProvider.apk (qui se trouve dans le répertoire /system/app/), vous aurez besoin de smali (un assembleur/désassembleur pour le format dex d'Android).

  • Après avoir désassemblé ContactsProvider.apk à l'aide de smali, allez dans le dossier res/values/ (dans la source désassemblée), et ajoutez le fichier (arrays.xml) contenant le contenu suivant :

<?xml version="1.0" encoding="UTF-8"?>
<resources>
    <string-array name="unrestricted_packages">
        <item>com.facebook.katana</item>
    </string-array>
</resources>
  • Le com.facebook.katana est l'application de facebook. Ainsi, après avoir ajouté le fichier arrays.xml au dossier /res/values/, assemblez le ContactsProvider en utilisant le smali dans un fichier apk non signé.
  • Or, depuis ICS, Android 4.0, Google a désactivé la possibilité d'établir une liste blanche des applications en mode natif, et a donc masqué certains champs de la base de données.
  • Ajoutez la colonne nommée
is_restricted

à la table raw_contacts dans contacts2.db ( stocké dans /data/data/com.Android.providers.contacts/database/ ) - Si vous avez activé sqlite (avec busybox) dans votre noyau, vous pouvez utiliser cette commande pour modifier la base de données et ajouter le champ nécessaire en l'exécutant sous ADB Shell :

sqlite3 /data/data/com.android.providers.contacts/databases/contacts2.db
 'ALTER TABLE raw_contacts ADD COLUMN is_restricted VARCHAR';
  • Après l'ajout de la colonne, tous les comptes facebook ajoutés seront dotés d'une invite de synchronisation et apparaîtront dans les contacts.

androidalle.com

AndroidAlle est une communauté de androiders où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X