Android 如何使用联系人id编辑nativecontacts字段
如何使用联系人id以编程方式编辑android中本机联系人的名字、姓氏、手机号码、照片、电子邮件、地址。请帮助我。提前感谢。单击按钮,执行以下操作:Android 如何使用联系人id编辑nativecontacts字段,android,native,edit,Android,Native,Edit,如何使用联系人id以编程方式编辑android中本机联系人的名字、姓氏、手机号码、照片、电子邮件、地址。请帮助我。提前感谢。单击按钮,执行以下操作: Intent in = new Intent(Intent.ACTION_INSERT_OR_EDIT); in.setType(ContactsContract.Contacts.CONTENT_ITEM_TYPE); startActivityForResult(in,EDIT_CONTACT);
Intent in = new Intent(Intent.ACTION_INSERT_OR_EDIT);
in.setType(ContactsContract.Contacts.CONTENT_ITEM_TYPE);
startActivityForResult(in,EDIT_CONTACT);
在onActivityResult函数中,执行以下操作:
案例编辑联系人:
if (resultCode == RESULT_OK) {
Uri contactData = data.getData();
Cursor cur = managedQuery(contactData, null, null, null, null);
ContentResolver contect_resolver = getContentResolver();
if (cur.moveToFirst()) {
String id = cur.getString(cur.getColumnIndexOrThrow(ContactsContract.Contacts._ID));
String name = "";
String no = "";
String key = cur.getString(cur.getColumnIndexOrThrow(ContactsContract.Contacts.LOOKUP_KEY));
String where = ContactsContract.Data.DISPLAY_NAME + " = ? AND " +
ContactsContract.Data.MIMETYPE + " = ? AND " +
String.valueOf(ContactsContract.CommonDataKinds.Phone.TYPE) + " = ? ";
String[] params = new String[] {name,
ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE,
String.valueOf(ContactsContract.CommonDataKinds.Phone.TYPE_HOME)};
Cursor phoneCur = contect_resolver.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null,
ContactsContract.CommonDataKinds.Phone.CONTACT_ID + " = ?", new String[] { id }, null);
if (phoneCur.moveToFirst()) {
name = phoneCur.getString(phoneCur.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME));
no = phoneCur.getString(phoneCur.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
key = phoneCur.getString(phoneCur.getColumnIndexOrThrow(ContactsContract.Contacts.LOOKUP_KEY));
System.out.println("EDITIDDDDDDDDDD"+name);
System.out.println("EDITIDDDDDDDDDD"+no);
System.out.println("EDITIDDDDDDDDDD"+key);
/*ArrayList<ContentProviderOperation> ops = new ArrayList<ContentProviderOperation>();
if ( (null == phoneCur) ) {
// createContact(name, phone);
} else {
ops.add(ContentProviderOperation.newUpdate(ContactsContract.Data.CONTENT_URI)
.withSelection(where, params)
.withValue(ContactsContract.CommonDataKinds.Phone.DATA, no)
.build());
}
phoneCur.close();
try {
cr.applyBatch(ContactsContract.AUTHORITY, ops);
} catch (RemoteException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (OperationApplicationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
*/
id = null;
name = null;
no = null;
phoneCur = null;
key = null;
contect_resolver = null;
cur = null;
}
}
}
break;
if(resultCode==RESULT\u OK){
Uri contactData=data.getData();
Cursor cur=managedQuery(contactData,null,null,null,null);
ContentResolver contectu resolver=getContentResolver();
if(cur.moveToFirst()){
字符串id=cur.getString(cur.getColumnIndexOrThrow(ContactsContract.Contacts.\u id));
字符串名称=”;
字符串编号=”;
String key=cur.getString(cur.getColumnIndexOrThrow(ContactsContract.Contacts.LOOKUP_key));
字符串,其中=contacts contract.Data.DISPLAY_NAME+“=”和“+
Contacts contract.Data.MIMETYPE+“=”和“+
String.valueOf(ContactsContract.CommonDataTypes.Phone.TYPE)+“=?”;
字符串[]参数=新字符串[]{name,
Contacts contract.CommonDataTypes.Phone.CONTENT\u ITEM\u TYPE,
String.valueOf(ContactsContract.CommonDataTypes.Phone.TYPE_HOME)};
游标phoneCur=contect\u resolver.query(ContactsContract.commondatatypes.Phone.CONTENT\u URI,null,
ContactsContract.CommonDataTypes.Phone.CONTACT_ID+“=?”,新字符串[]{ID},null);
if(phoneCur.moveToFirst()){
name=phoneCur.getString(phoneCur.getColumnIndex(ContactsContract.CommonDataTypes.Phone.DISPLAY_name));
否=phoneCur.getString(phoneCur.getColumnIndex(ContactsContract.CommonDataTypes.Phone.NUMBER));
key=phoneCur.getString(phoneCur.getColumnIndexOrThrow(ContactsContract.Contacts.LOOKUP_key));
System.out.println(“editiddd”+名称);
System.out.println(“editiddd”+no);
System.out.println(“editiddd”+键);
/*ArrayList ops=新的ArrayList();
if((null==phoneCur)){
//创建联系人(姓名、电话);
}否则{
添加(ContentProviderOperation.newUpdate(ContactsContract.Data.CONTENT\uURI)
.选择(其中,参数)
.带值(contacts contract.commondatacates.Phone.DATA,no)
.build());
}
phoneCur.close();
试一试{
cr.applyBatch(联系合同管理局,ops);
}捕获(远程异常){
//TODO自动生成的捕捉块
e、 printStackTrace();
}捕获(操作应用程序异常e){
//TODO自动生成的捕捉块
e、 printStackTrace();
}
*/
id=null;
name=null;
否=空;
phoneCur=null;
key=null;
contect_解析器=null;
cur=null;
}
}
}
打破
到目前为止您尝试了什么??有了这个名声,你应该知道怎么问。检查这个:好的,试试看,我还没有检查过这个。。。因此,让我知道如何获取最后插入的联系人id是否有效。请让我知道GetContentResolver().applyBatch(ContactsContract.AUTHORITY,ops);选择=“(“+ContactsContract.Contacts.DISPLAY\u NAME+”=\”“+first\u NAME+”“+last\u NAME+”);游标c1=getContentResolver().query(ContactsContract.Contacts.CONTENT\u URI,Contacts\u SUMMARY\u投影,select,null,ContactsContract.Contacts.DISPLAY\u NAME+“整理本地化ASC”);开始管理光标(c1);int id=0;如果(c1.moveToNext()){id=new Integer(c1.getString(0)).intValue();System.out.println(“此新添加的联系人的NativeContaid”+id);}请参阅上面的代码,我使用联系人的名字和姓氏获取上次插入的联系人id。但我怀疑db中是否已经存在该名称,可能会出现问题b。因此,如何在插入联系人后获取上次插入的联系人id要了解上次插入的联系人id,我建议您在联系人中使用查找键