如何在android中添加超过5000个联系人?

如何在android中添加超过5000个联系人?,android,performance,android-intent,android-contentprovider,android-contacts,Android,Performance,Android Intent,Android Contentprovider,Android Contacts,我正在尝试在android中添加多个联系人,因为我使用了一项服务,所以我的UI不会受到影响。但问题是,我得到了一个错误,屈服点一次不能接受超过500个。现在我试着一块一块地做,但我还是不能一次添加超过120个联系人!!。请回复 import java.util.ArrayList; import android.app.IntentService; import android.content.ContentProviderOperation; import android.content.I

我正在尝试在android中添加多个联系人,因为我使用了一项服务,所以我的UI不会受到影响。但问题是,我得到了一个错误,屈服点一次不能接受超过500个。现在我试着一块一块地做,但我还是不能一次添加超过120个联系人!!。请回复

import java.util.ArrayList;

import android.app.IntentService;
import android.content.ContentProviderOperation;
import android.content.Intent;
import android.content.OperationApplicationException;
import android.os.RemoteException;
import android.provider.ContactsContract;
import android.provider.ContactsContract.CommonDataKinds;
import android.provider.ContactsContract.RawContacts;
import android.provider.ContactsContract.CommonDataKinds.Phone;
import android.provider.ContactsContract.CommonDataKinds.StructuredName;
import android.util.Log;
import android.widget.Toast;

public class MyServices extends IntentService {

    long mNumber;
    String cMobile;
    static int rawContactID;
    public static String CC = "countrycode";
    public static String PHONENUMBER = "";
    ArrayList<ContentProviderOperation> ops;

    public MyServices() {
        super("adding Contatcts");

    }

    @Override
    protected void onHandleIntent(Intent intent) {
        // String cc = intent.getStringExtra(CC);
        String cNumber = intent.getStringExtra(PHONENUMBER);
        // Log.e("CC", String.valueOf(cc));

        try {

            mNumber = Long.parseLong(cNumber);

        } catch (Exception e) {

        }

        int j = 1001;
        ops = new ArrayList<ContentProviderOperation>();
        ops.add(ContentProviderOperation
                .newInsert(ContactsContract.RawContacts.CONTENT_URI)
                .withValue(ContactsContract.RawContacts.ACCOUNT_TYPE, null)
                .withValue(RawContacts.ACCOUNT_NAME, null).build());
        for (int i = 1; i < 220; i++) {
            rawContactID = ops.size();

            if (rawContactID % 100 == 1) {
                doOpration();
                ops = new ArrayList<ContentProviderOperation>();
            }

            String newName = "WhatsAppDating".concat("  " + j);
            j++;
            long k = mNumber;
            long m = k + i;
            Log.e("adding", String.valueOf(m));
            String fNumber = String.valueOf("+91" + m);

            // Adding insert operation to operations list
            // to insert display name in the table ContactsContract.Data
            ops.add(ContentProviderOperation
                    .newInsert(ContactsContract.Data.CONTENT_URI)
                    .withValueBackReference(
                            ContactsContract.Data.RAW_CONTACT_ID, i)
                    .withValue(ContactsContract.Data.MIMETYPE,
                            StructuredName.CONTENT_ITEM_TYPE)
                    .withValue(StructuredName.DISPLAY_NAME, newName).build());

            // Adding insert operation to operations list
            // to insert Mobile Number in the table
            // ContactsContract.Data
            ops.add(ContentProviderOperation
                    .newInsert(ContactsContract.Data.CONTENT_URI)
                    .withValueBackReference(
                            ContactsContract.Data.RAW_CONTACT_ID, i)
                    .withValue(ContactsContract.Data.MIMETYPE,
                            Phone.CONTENT_ITEM_TYPE)
                    .withValue(Phone.NUMBER, fNumber)
                    .withValue(Phone.TYPE, CommonDataKinds.Phone.TYPE_MOBILE)
                    .build());

        }

    }

    private void doOpration() {
        try {
            Log.e("One 100 done", String.valueOf(ops.size()));
            getContentResolver().applyBatch(ContactsContract.AUTHORITY, ops);

        } catch (RemoteException e) {
            e.printStackTrace();
        } catch (OperationApplicationException e) {
            e.printStackTrace();
        }
        Toast.makeText(getApplicationContext(),
                "Contacts are successfully added", Toast.LENGTH_SHORT).show();
        return;
    }

}
import java.util.ArrayList;
导入android.app.IntentService;
导入android.content.ContentProviderOperation;
导入android.content.Intent;
导入android.content.OperationApplicationException;
导入android.os.RemoteException;
导入android.provider.contacts合同;
导入android.provider.ContactsContract.CommonDataTypes;
导入android.provider.contacts contract.raw联系人;
导入android.provider.contacts contract.CommonDataTypes.Phone;
导入android.provider.ContactsContract.CommonDataTypes.StructuredName;
导入android.util.Log;
导入android.widget.Toast;
公共类MyServices扩展了IntentService{
长号码;
字符串移动;
静态int-rawContactID;
公共静态字符串CC=“countrycode”;
公共静态字符串PHONENUMBER=“”;
ArrayList ops;
公共MyServices(){
超级(“添加合同”);
}
@凌驾
受保护的手部内容无效(意图){
//字符串cc=intent.getStringExtra(cc);
字符串cNumber=intent.getStringExtra(电话号码);
//Log.e(“CC”,String.valueOf(CC));
试一试{
mNumber=Long.parseLong(cNumber);
}捕获(例外e){
}
int j=1001;
ops=新的ArrayList();
添加操作(ContentProviderOperation
.newInsert(contacts contract.RawContacts.CONTENT\u URI)
.withValue(contacts contract.raw contacts.ACCOUNT_TYPE,null)
.withValue(rawscontacts.ACCOUNT_NAME,null).build());
对于(int i=1;i<220;i++){
rawContactID=ops.size();
如果(原始联系人ID%100==1){
doOpration();
ops=新的ArrayList();
}
字符串newName=“WhatsAppDating”.concat(“+j”);
j++;
长k=mNumber;
长m=k+i;
Log.e(“添加”,String.valueOf(m));
字符串fNumber=字符串的值(“+91”+m);
//将插入操作添加到操作列表
//在表contacts contract.Data中插入显示名称
添加操作(ContentProviderOperation
.newInsert(contacts合同.Data.CONTENT\u URI)
.withValueBackReference(
Contacts contract.Data.RAW_CONTACT_ID,i)
.带值(contacts contract.Data.MIMETYPE,
StructuredName.CONTENT\u ITEM\u TYPE)
.withValue(StructuredName.DISPLAY_NAME,newName).build());
//将插入操作添加到操作列表
//在表中插入手机号码的步骤
//联系人合同数据
添加操作(ContentProviderOperation
.newInsert(contacts合同.Data.CONTENT\u URI)
.withValueBackReference(
Contacts contract.Data.RAW_CONTACT_ID,i)
.带值(contacts contract.Data.MIMETYPE,
电话。内容\项目\类型)
.withValue(电话号码,fNumber)
.withValue(Phone.TYPE、CommonDataTypes.Phone.TYPE\u MOBILE)
.build());
}
}
私人空间{
试一试{
Log.e(“完成一个100”,String.valueOf(ops.size());
getContentResolver().applyBatch(contacts contract.AUTHORITY,ops);
}捕获(远程异常){
e、 printStackTrace();
}捕获(操作应用程序异常e){
e、 printStackTrace();
}
Toast.makeText(getApplicationContext(),
“联系人已成功添加”,Toast.LENGTH_SHORT.show();
回来
}
}

您是否尝试过bulkinsert?:,android.content.ContentValues[])我已经试过了,但对于如此大的交易来说,速度太慢了。