Return-Path: X-Original-To: apmail-cordova-issues-archive@minotaur.apache.org Delivered-To: apmail-cordova-issues-archive@minotaur.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 9066518121 for ; Fri, 20 Nov 2015 14:09:16 +0000 (UTC) Received: (qmail 79006 invoked by uid 500); 20 Nov 2015 14:09:11 -0000 Delivered-To: apmail-cordova-issues-archive@cordova.apache.org Received: (qmail 78983 invoked by uid 500); 20 Nov 2015 14:09:11 -0000 Mailing-List: contact issues-help@cordova.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Delivered-To: mailing list issues@cordova.apache.org Received: (qmail 78939 invoked by uid 99); 20 Nov 2015 14:09:11 -0000 Received: from arcas.apache.org (HELO arcas) (140.211.11.28) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 20 Nov 2015 14:09:11 +0000 Received: from arcas.apache.org (localhost [127.0.0.1]) by arcas (Postfix) with ESMTP id 2376C2C1F6E for ; Fri, 20 Nov 2015 14:09:11 +0000 (UTC) Date: Fri, 20 Nov 2015 14:09:11 +0000 (UTC) From: "Vladimir Kotikov (JIRA)" To: issues@cordova.apache.org Message-ID: In-Reply-To: References: Subject: [jira] [Updated] (CB-5308) Contact.save() calls failure callback even though contact data is successfully saved on device MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-JIRA-FingerPrint: 30527f35849b9dde25b450d4833f0394 [ https://issues.apache.org/jira/browse/CB-5308?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Vladimir Kotikov updated CB-5308: --------------------------------- Component/s: (was: mobile-spec) > Contact.save() calls failure callback even though contact data is successfully saved on device > ---------------------------------------------------------------------------------------------- > > Key: CB-5308 > URL: https://issues.apache.org/jira/browse/CB-5308 > Project: Apache Cordova > Issue Type: Bug > Components: Plugin Contacts > Environment: Android 4.1.2, 4.4.3 physical device. 4.4.3 device is Nexus 7. > Reporter: Shingo Toda > Priority: Minor > Labels: Android > > When I run contact mobile-spec, following specs sometimes fail. > - contacts.spec.6 > - contacts.spec.20 > - contacts.spec.21 > - contacts.spec.24 > In Java side, it looks that {{ContactAccessorSdk5.save()}} returns contact id but {{ContactAccessorSdk5.getContactById()}} returns {{null}} instead of contact data associated with the id. Actually some of contact data such as "Test Delete" are found on my device so the save operation is actually done. > This save() returns "newId" in the following code. > {code:title=ContactAccessorSdk5.java|borderStyle=solid} > //Add contact > try { > ContentProviderResult[] cpResults = mApp.getActivity().getContentResolver().applyBatch(ContactsContract.AUTHORITY, ops); > if (cpResults.length >= 0) { > newId = cpResults[0].uri.getLastPathSegment(); > } > } catch (RemoteException e) { > Log.e(LOG_TAG, e.getMessage(), e); > } catch (OperationApplicationException e) { > Log.e(LOG_TAG, e.getMessage(), e); > } > return newId; > {code} > When I debug it, {{cpResults\[0\].uri}} is {{content://com.android.contacts/raw_contacts/xxxx}} so, this is just my assumption, I think {{save()}} returns raw contact id. > But at {{getContactById()}}, query filter uses {{CONTACT_ID}} column as a projection. > {code:title=ContactAccessorSdk5.java|borderStyle=solid} > Cursor c = mApp.getActivity().getContentResolver().query(ContactsContract.Data.CONTENT_URI, > null, > ContactsContract.Data.CONTACT_ID + " = ? ", > new String[] { id }, > ContactsContract.Data.CONTACT_ID + " ASC"); > {code} > So if contact id and raw contact id is different then fetching contact data might fail. Actually in my case, if I fail the specs, they are always different. > I try modifying {{getContactById()}} to process following code if contact JSONObject doesn't have id property, then I didn't get failure for those specs even if I run them some times. > {code:title=ContactAccessorSdk5.java|borderStyle=solid} > Cursor c = mApp.getActivity().getContentResolver().query(ContactsContract.Data.CONTENT_URI, > null, > ContactsContract.Data.RAW_CONTACT_ID + " = ? ", > new String[] { rawid }, > ContactsContract.Data.RAW_CONTACT_ID + " ASC"); > {code} > I am just learning how contact data is managed on Android so I might be wrong for some use cases, but it works fine for mobile-spec. -- This message was sent by Atlassian JIRA (v6.3.4#6332) --------------------------------------------------------------------- To unsubscribe, e-mail: issues-unsubscribe@cordova.apache.org For additional commands, e-mail: issues-help@cordova.apache.org