我希望能在我的应用程序中通过一个按钮按下来删除所有联系人,那么有没有好心的人可以告诉我如何在Android移动设备上通过编程实现一键删除所有联系人?非常感谢您的答复...
实际上,我已经浏览了几个小时,但没有得到任何合适的答案。这就是为什么我需要在这个好论坛中发布我的问题...感谢这样的论坛...
实际上,我已经浏览了几个小时,但没有得到任何合适的答案。这就是为什么我需要在这个好论坛中发布我的问题...感谢这样的论坛...
非常简单,这段代码将删除你所有的联系人。
ContentResolver contentResolver = <your app context>.getContentResolver();
Cursor cursor = contentResolver.query(ContactsContract.Contacts.CONTENT_URI, null, null, null, null);
while (cursor.moveToNext()) {
String lookupKey = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts.LOOKUP_KEY));
Uri uri = Uri.withAppendedPath(ContactsContract.Contacts.CONTENT_LOOKUP_URI, lookupKey);
contentResolver.delete(uri, null, null);
}
完成。
在您的AndroidManifest.xml中指定READ_CONTACTS和WRITE_CONTACTS权限。
遍历每个联系人并删除每条记录:内容提供程序
注意删除联系人!删除聚合联系人会删除所有组成部分原始联系人。相应的同步适配器将注意到其各自原始联系人的删除并将其从其后端存储中删除。
关于权限,请参见权限组:
注意:未来版本的Android SDK可能会将特定权限从一个组移动到另一个组。因此,不要基于这些权限组的结构来构建应用程序的逻辑。private void deleteAllContacts(){
ContentResolver contentResolver = getContentResolver();
Uri rawUri = ContactsContract.RawContacts.CONTENT_URI.buildUpon().appendQueryParameter(ContactsContract.CALLER_IS_SYNCADAPTER, "true").build();
ArrayList<ContentProviderOperation> ops = new ArrayList<>();
ops.add( ContentProviderOperation.newDelete(ContactsContract.RawContacts.CONTENT_URI).
withSelection(ContactsContract.RawContacts._ID + ">? "
,new String[]{ "-1" }).build()); //sets deleted flag to 1
ops.add(ContentProviderOperation.newDelete(rawUri).
withSelection(ContactsContract.RawContacts._ID + ">? "
,new String[]{ "-1" }).build()); //erases
try {
contentResolver.applyBatch( ContactsContract.AUTHORITY, ops );
} catch ( RemoteException e) {
Log.d( "ContactsActivity", "RemoteException --> " + e );
e.printStackTrace();
} catch ( OperationApplicationException e) {
Log.d( "ContactsActivity", "OperationApplicationException --> " + e );
e.printStackTrace();
}
}
享受吧!