1

I just installed CM12 on N5110, and I made Titanium backup of all apps before. Now whenever I try to get my contacts back, the Contact app of android stops with error "android.process.acore stopped...

How to get the contacts? cause I didnt take google based backup on my contacts.

Thanks

  • Do you've the backup of Contacts Storage or Contacts Provider app? That app keeps the contacts in the database named contacts2.db. As long as the database is not corrupted, clearing data of that app, restoring data from Titanium and rebooting should work. If not, then extract database from backup, force stop the app, go to app's data directory and replace the database there. Reboot and see what happens. – Firelord Dec 23 '15 at 4:45
  • thats what i did... restore from titanium.. but the thing is that now with CM12, I have Contact 5.1, and old was Contact 4.1.2. So thats possibly one issue I guess.. – Raheel Hasan Dec 23 '15 at 5:04
1

Here's how you can (try to) restore your contacts manually. (NOTE: I'm assuming a little bit of Linux knowledge. I've tried to cover the things that are hard to look up, but little else.)

First, enable USB debugging mode, and plug your phone into your computer. Then,

  1. Find the folder that contains your backups. By default, I think this is something like /sdcard/TitaniumBackup. If you used a custom location (e.g., to store backups on an external SD card), then it should be easy to find.
  2. There should be a gzipped tarball with a name similar to com.android.providers.contacts-<date>.tar.gz. Copy it to your computer with adb pull.
  3. Untar the file you just pulled. There should now be a folder called data. Descend into data/data/com.android.providers.contacts/databases/. There you will find contacts2.db and profile.db. Use adb push to upload these to your phone. (Note: You will probably have to push them to a location that does not require root access.)

(For the next steps, you may want to reboot into recovery mode, to make sure that your phone is not using your contacts database. You can do this easily using adb reboot recovery.)

  1. Start a shell with adb again, and escalate to root using su. cd to /data/data/com.android.providers.contacts/databases/. Rename contacts2.db to contacts2.db.cm and profile.db to profile.db.cm.
  2. Copy the files you pushed to /data/data/com.android.providers.contacts/databases/, so that they replace the ones you just renamed.
  3. Make sure your new files have the same permissions as the old ones. Check the permissions of contacts2.db.cm and profile.db.cm with ls -l, and change the perms of your files with chown. Check the SELinux labels with ls -Z, and change them if needed with chcon <full label> <file>.
  4. Reboot and see if it worked.

I hope this method works for you. I must admit, that when I tried it, CyanogenMod immediately reverted my changes (such that contacts2.db matched the original contacts2.db.cm). If this method does not work, and you really want to use CyanogenMod, then you can still recover the data from contacts2.db and try to add all of your contacts by hand.

  1. Install sqlite3.
  2. Run sqlite3 contacts2.db.
  3. Your phone numbers are in the table named phone_lookup, and display names can be retrieved from the table named raw_contacts. You can see (at least some of) your contacts by running

select raw_contacts.display_name, phone_lookup.normalized_number from raw_contacts inner join phone_lookup on raw_contacts._id = phone_lookup.raw_contact_id;

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.