小编and*_*fan的帖子

以编程方式编辑联系人的姓名/电话号码

我试图以编程方式修改联系人的显示名称:

     try {
        ArrayList<ContentProviderOperation> ops = new ArrayList<ContentProviderOperation>();

        ops.add(ContentProviderOperation.newUpdate(Data.CONTENT_URI)
        .withSelection(ContactsContract.CommonDataKinds.Phone._ID + " = ?", new String[] {contact_id})
        .withValue(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME, "anything")
        .build());

        ContentProviderResult[] result = getContentResolver().applyBatch(ContactsContract.AUTHORITY, ops);
    } catch (Exception e) {
        Log.w("UpdateContact", e.getMessage()+"");
        for(StackTraceElement ste : e.getStackTrace()) {
            Log.w("UpdateContact", "\t" + ste.toString());
        }
        Context ctx = getApplicationContext();
        int duration = Toast.LENGTH_SHORT;
        Toast toast = Toast.makeText(ctx, "Update failed", duration);
        toast.show();
    }
Run Code Online (Sandbox Code Playgroud)

contact_idContactsContract.CommonDataKinds.Phone._ID聚集在以前的活动

代码执行正常,但是:

  • ContentProviderResult[] 结果为空
  • 联系人姓名保持不变

我也尝试了Data.DISPLAY_NAME但效果相同.

我阅读了手册:http://developer.android.com/guide/topics/providers/contacts-provider.html但我不想调用本机意图.

谢谢.

android android-contentresolver contactscontract android-contacts

8
推荐指数
1
解决办法
7735
查看次数