mirror of
https://github.com/apache/cordova-android.git
synced 2025-02-26 03:53:09 +08:00
Will now use a "smarter" approach to finding an account for Contact.save, the order of account search will be:
1. Exchange provider 2. Google 3. Any valid email address account
This commit is contained in:
parent
f090f9a70c
commit
e3c72fa915
@ -5,6 +5,7 @@
|
|||||||
*
|
*
|
||||||
* Copyright (c) 2005-2010, Nitobi Software Inc.
|
* Copyright (c) 2005-2010, Nitobi Software Inc.
|
||||||
* Copyright (c) 2010, IBM Corporation
|
* Copyright (c) 2010, IBM Corporation
|
||||||
|
* Copyright (c) 2011, Giant Leap Technologies AS
|
||||||
*/
|
*/
|
||||||
/*
|
/*
|
||||||
* Copyright (C) 2009 The Android Open Source Project
|
* Copyright (C) 2009 The Android Open Source Project
|
||||||
@ -695,7 +696,7 @@ public class ContactAccessorSdk5 extends ContactAccessor {
|
|||||||
}
|
}
|
||||||
return relationship;
|
return relationship;
|
||||||
}
|
}
|
||||||
|
private static final String EMAIL_REGEXP = ".+@.+\\.+.+"; /* <anything>@<anything>.<anything>*/
|
||||||
@Override
|
@Override
|
||||||
/**
|
/**
|
||||||
* This method will save a contact object into the devices contacts database.
|
* This method will save a contact object into the devices contacts database.
|
||||||
@ -705,22 +706,52 @@ public class ContactAccessorSdk5 extends ContactAccessor {
|
|||||||
*/
|
*/
|
||||||
public boolean save(JSONObject contact) {
|
public boolean save(JSONObject contact) {
|
||||||
AccountManager mgr = AccountManager.get(mApp);
|
AccountManager mgr = AccountManager.get(mApp);
|
||||||
|
|
||||||
Account[] accounts = mgr.getAccounts();
|
Account[] accounts = mgr.getAccounts();
|
||||||
|
|
||||||
// TODO For now we are assuming that we should use the first
|
Account account = null;
|
||||||
// account found in the list of accounts
|
|
||||||
if (accounts.length < 1) {
|
if (accounts.length == 1)
|
||||||
return false;
|
account = accounts[0];
|
||||||
|
else if (accounts.length > 1) {
|
||||||
|
for(Account a : accounts){
|
||||||
|
if(a.type.contains("eas")&& a.name.matches(EMAIL_REGEXP)) /*Exchange ActiveSync*/
|
||||||
|
{
|
||||||
|
account = a;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if(account == null){
|
||||||
|
for(Account a : accounts){
|
||||||
|
if(a.type.contains("com.google") && a.name.matches(EMAIL_REGEXP)) /*Google sync provider*/
|
||||||
|
{
|
||||||
|
account = a;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if(account == null){
|
||||||
|
for(Account a : accounts){
|
||||||
|
if(a.name.matches(EMAIL_REGEXP)) /*Last resort, just look for an email address...*/
|
||||||
|
{
|
||||||
|
account = a;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(account == null)
|
||||||
|
return false;
|
||||||
|
|
||||||
String id = getJsonString(contact, "id");
|
String id = getJsonString(contact, "id");
|
||||||
// Create new contact
|
// Create new contact
|
||||||
if (id==null) {
|
if (id == null) {
|
||||||
return createNewContact(contact, accounts[0]);
|
return createNewContact(contact, account);
|
||||||
}
|
}
|
||||||
// Modify existing contact
|
// Modify existing contact
|
||||||
else {
|
else {
|
||||||
return modifyContact(id, contact, accounts[0]);
|
return modifyContact(id, contact, account);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user