Repository: cordova-plugin-contacts
Updated Branches:
  refs/heads/0.2.11 edc744aa5 -> 104c56561


CB-7003: Make pickContact pick correct contact on Android 4.3 and 4.4.3


Project: http://git-wip-us.apache.org/repos/asf/cordova-plugin-contacts/repo
Commit: 
http://git-wip-us.apache.org/repos/asf/cordova-plugin-contacts/commit/aef7032e
Tree: 
http://git-wip-us.apache.org/repos/asf/cordova-plugin-contacts/tree/aef7032e
Diff: 
http://git-wip-us.apache.org/repos/asf/cordova-plugin-contacts/diff/aef7032e

Branch: refs/heads/0.2.11
Commit: aef7032ea4670b381b3bca70cec091f93667f8d5
Parents: edc744a
Author: sgrebnov <[email protected]>
Authored: Mon Jun 30 15:46:26 2014 +0400
Committer: Ian Clelland <[email protected]>
Committed: Wed Jul 2 09:52:41 2014 -0400

----------------------------------------------------------------------
 src/android/ContactManager.java | 15 ++++++++++++++-
 1 file changed, 14 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cordova-plugin-contacts/blob/aef7032e/src/android/ContactManager.java
----------------------------------------------------------------------
diff --git a/src/android/ContactManager.java b/src/android/ContactManager.java
index e1a4568..1bb9c43 100644
--- a/src/android/ContactManager.java
+++ b/src/android/ContactManager.java
@@ -27,7 +27,9 @@ import org.json.JSONObject;
 
 import android.app.Activity;
 import android.content.Intent;
+import android.database.Cursor;
 import android.provider.ContactsContract.Contacts;
+import android.provider.ContactsContract.RawContacts;
 import android.util.Log;
 
 public class ContactManager extends CordovaPlugin {
@@ -161,8 +163,19 @@ public class ContactManager extends CordovaPlugin {
         if (requestCode == CONTACT_PICKER_RESULT) {
             if (resultCode == Activity.RESULT_OK) {
                 String contactId = intent.getData().getLastPathSegment();
+                // to populate contact data we require  Raw Contact ID
+                // so we do look up for contact raw id first
+                Cursor c =  
this.cordova.getActivity().getContentResolver().query(RawContacts.CONTENT_URI,
+                            new String[] {RawContacts._ID}, 
RawContacts.CONTACT_ID + " = " + contactId, null, null);
+                if (!c.moveToFirst()) {
+                    this.callbackContext.error("Error occured while retrieving 
contact raw id");
+                    return;
+                }
+                String id = c.getString(c.getColumnIndex(RawContacts._ID));
+                c.close();
+
                 try {
-                    JSONObject contact = 
contactAccessor.getContactById(contactId);
+                    JSONObject contact = contactAccessor.getContactById(id);
                     this.callbackContext.success(contact);
                     return;
                 } catch (JSONException e) {

Reply via email to