我想删除名称为Leo的用户名。所以我将删除查询如下
int i = getContentResolver().delete(Contacts.CONTENT_URI, Contacts.DISPLAY_NAME +"= 'Leo'",null);
System.out.println("rows deleted "+i);
but it returns "rows deleted 0"
它有什么问题。
编辑:
以上操作无效,因为该字段仅使用Contacts.CONTENT_URI
进行读取
您可以看到使用以下URI。
http://developer.android.com/reference/android/provider/ContactsContract.Contacts.html
答案 0 :(得分:1)
http://developer.android.com/resources/samples/SampleSyncAdapter/index.html
在上面的链接中,我可以找到解决方案。我可以完全删除联系人。
问题与同步适配器有关。
答案 1 :(得分:1)
要从contactDB中删除所选联系人,我们可以使用以下代码。
ContentResolver cr = getContentResolver();
String where = ContactsContract.Data.DISPLAY_NAME + " = ? ";
String[] params = new String[] {nam};
ArrayList<ContentProviderOperation> ops = new ArrayList<ContentProviderOperation>();
ops.add(ContentProviderOperation.newDelete(ContactsContract.RawContacts.CONTENT_URI)
.withSelection(where, params)
.build());
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();
}
答案 2 :(得分:0)
我想你应该在Android清单中说明WRITE_CONTACTS
的权限。查看http://developer.android.com/reference/android/Manifest.permission.html