Android 如何使用联系人id编辑nativecontacts字段

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);

如何使用联系人id以编程方式编辑android中本机联系人的名字、姓氏、手机号码、照片、电子邮件、地址。请帮助我。提前感谢。

单击按钮,执行以下操作:

        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,我建议您在联系人中使用查找键