Many people just love the way their list of contacts is brightly lit with photos from their contacts’ Facebook accounts. If you have hundreds of contacts on your list, seeing photos of your contacts can actually help you find contact information more easily.

Synchronization has always been an integral part of Android. From calendar, contacts, weather, to Facebook friends, everything is automated and information is wirelessly synced with your phone. In Android 2.3 Gingerbread, enabling Facebook sync was a rather straightforward and uncomplicated process. Just launch the app, choose to sync all contacts, and you’re good to go.

The case is different in Ice Cream Sandwich, though. There have been reports of buggy or completely non-functioning Facebook Sync on Ice Cream Sandwich. This may change once Facebook updates its app and complies with Google standards and guidelines.

If you have Ice Cream Sandwich on your phone and you want to enable Facebook contact syncing, you can do so with a little bit of hacking. Read on for the instructions.


Step 1 – Contacts Provider

Past versions of Android required a minor fix in ContactsProvider to allow synchronization to work properly. If you have a disassembled copy of the ContactsProvider.apk, then look for the file named arrays.xml. You can do this by getting hold of a copy of the ContactsProvider.apk. Open the contents of the APK file by using any extracting software such as Winzip or 7zip.

If you have done a few programming sessions with Android it should be fairly easy to locate but in case you’re not familiar, the file is nestled under res/values/arrays.xml.

In the Ice Cream Sandwich package, however, this file does not actually exist. So, we need to generate this one. The file should contain the following:

<?xml version="1.0" encoding="utf-8"?>
<string-array name="unrestricted_packages">

This code adds the Facebook app to a group that elevates its access to contacts. In this case, the group is katana. You can get a ready-to-use copy of the full ContactsProvider.apk with the modified XML file here.

After downloading ContactsProvider.apk, save it to your SD card and install it. You can use any file manager application to install it.

Step 2 – Tweaking the Contacts Database

Upon synchronizing, expect to see some missing columns in the contacts database, particularly the “is_restricted” column. A fix for this is to use an SQLite binary to place the column back into the original database.

You can download the sqlite3 binary from here. Save it to /system/xbin on your phone.

Putting back the missing column into the original database normally requires you to type SQL commands on a terminal window. Fortunately, Paul O’Brien of MoDaCo has created a script called 99complete that does the job. Get the 99complete script here and save it to /system/etc/init.d/ on your phone.

If Facebook sync still doesn’t work the first time you reboot after making the changes, try rebooting. It is possible that the contacts database doesn’t exist yet, but a reboot would usually create the contacts database that the 99complete script could work on.

Does Facebook Sync now work on your ICS-enabled phone?

Paul Nuñal
Paul and I.T. are synonyms. If you need help with I.T.-related stuff, call on Paul. His experience with Android phones goes way back to the ancient single-core-phone days. But, he keeps himself up to date, so now he has a dual-core beast in his pocket, and is looking forward to getting his first quad-core monster, and when it comes, his first eight-core phone. Perhaps he should be called Mr. X-Core, where "X" equals the number of CPU cores.