如何在android中添加超过5000个联系人?
我正在尝试在android中添加多个联系人,因为我使用了一项服务,所以我的UI不会受到影响。但问题是,我得到了一个错误,屈服点一次不能接受超过500个。现在我试着一块一块地做,但我还是不能一次添加超过120个联系人!!。请回复如何在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
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[])我已经试过了,但对于如此大的交易来说,速度太慢了。