批量添加多个联系人

lst*_*kov 6 java android contacts android-contentprovider

我完全可以使用以下代码逐个添加联系人:

    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();
    }
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试逐个添加大约500个联系人时 - 它需要几分钟,这对我的应用来说太长了.是否有更快的方式添加多个联系人?

JPM*_*JPM 0

为什么不将数组列表设置为可以从任何活动访问的全局数组列表,我不会在捆绑包中插入那么多内容,因为当您这样做时会发生更多事情,它只是为了传递少量信息。我会这样做,确保也在清单中调用它..

public class MyStates extends Application {

    private  ArrayList<ContentProviderOperation> ops = new ArrayList<ContentProviderOperation>();

    public ArrayList getList() {
    return this.blueToothAdapter;
    }

    public void setList(ArrayList<ContentProviderOperation> o) {
        this.ops= o;
    }
Run Code Online (Sandbox Code Playgroud)