Sono perfettamente in grado di aggiungere contatti uno ad uno con seguente codice:Aggiungere diversi contatti in lotti
ArrayList<ContentProviderOperation> ops = new ArrayList<ContentProviderOperation>();
ops.add(ContentProviderOperation.newInsert(RawContacts.CONTENT_URI)
.withValue(ContactsContract.RawContacts.ACCOUNT_TYPE, null)
.withValue(ContactsContract.RawContacts.ACCOUNT_NAME, null).build());
ops.add(ContentProviderOperation
.newInsert(Data.CONTENT_URI)
.withValueBackReference(Data.RAW_CONTACT_ID, 0)
.withValue(Data.MIMETYPE,
CommonDataKinds.StructuredName.CONTENT_ITEM_TYPE)
.withValue(StructuredName.GIVEN_NAME, "Hello")
.withValue(StructuredName.FAMILY_NAME, "World").build());
try {
getContentResolver().applyBatch(ContactsContract.AUTHORITY, ops);
} catch (RemoteException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (OperationApplicationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Tuttavia, quando provo ad aggiungere circa 500 contatti uno per uno - ci vogliono pochi minuti, che è troppo lungo per la mia app. È il modo più veloce per aggiungere più contatti?
È possibile aggiungerli in un thread, non nel thread dell'interfaccia utente. – Phil
Lo faccio in thread separati, il problema è che l'operazione stessa richiede troppo tempo. In iPhone ci vogliono pochi secondi per 500 contatti. – lstipakov
Lo faccio in un modo simile, tuttavia faccio i batch per ogni volta che voglio aggiungere un contatto. Non penso che sia la strada giusta, ma sembra funzionare bene –