Android - 无法仅删除指定备注的联系人

时间:2015-06-15 00:05:15

标签: android contacts android-contacts contactscontract

我正在开发一个创建随机联系人的项目,但我无法实现删除功能。我通过

标记了每个生成的联系人
        ops.add(ContentProviderOperation
            .newInsert(ContactsContract.Data.CONTENT_URI)
            .withValueBackReference(Data.RAW_CONTACT_ID,
                    rawContactInsertIndex)
            .withValue(Data.MIMETYPE, Note.CONTENT_ITEM_TYPE)
            .withValue(Note.NOTE, note)
            .build());

现在删除联系人我需要使用类似于我在此处找到的内容

Uri contactUri = Uri.withAppendedPath(PhoneLookup.CONTENT_FILTER_URI,
                           Uri.encode(phoneNumber));
       Cursor cur = ctx.getContentResolver().query(contactUri, null, null,
                       null, null);
       try {
           if (cur.moveToFirst()) {
               do {
                  String lookupKey = 
                    cur.getString(cur.getColumnIndex(ContactsContract.Contacts.LOOKUP_KEY));
                  Uri uri = Uri.withAppendedPath(
                                 ContactsContract.Contacts.CONTENT_LOOKUP_URI,
                                 lookupKey);
                  ctx.getContentResolver().delete(uri, null, null);
               } while (cur.moveToNext());
           }

       } catch (Exception e) {
               System.out.println(e.getStackTrace());
       }
       return false;
}

我认为上面的代码和我要搜索的内容之间的唯一区别是上面的代码使用电话号码来删除联系人,但出于我的目的,我需要通过联系人的Note字段删除。

1 个答案:

答案 0 :(得分:1)

解决了我的问题..我对java太新了,并尝试使用' =='来比较字符串。而不是stringObject.equals()。

这是一个基于字符串删除联系人的小功能,以防任何人需要这样的东西。

public class Employee {


    String name;
    int id;
    public Employee(String name,int id) {
    System.out.println("First Constrcuot ");
    }

    public Employee(int id,String name){
        System.out.println("Second Constrcuot ");
    }
}