Android MIUI 删除联系人

正常情况下,删除联系人可以使用如下代码:

getContentResolver().delete(ContactsContract.RawContacts.CONTENT_URI, ContactsContract.Contacts.DISPLAY_NAME + "=?", new String[]{name});

但是在MIUI中,却失败了,弹出如下对话框:

MIUI系统对话框

通过系统log可以发现:

pkg: com.android.providers.contacts activity: com.miui.providers.contacts.ContactsDeletionDialog。

即这是系统联系人数据库弹出的界面,且是MIUI定制增加的,并非AOSP逻辑。

从对话框内容可以看出,MIUI为了保护信息安全,禁止第三方app删除联系人。难道小米真的不允许第三方app删除联系人?不应该啊,很多第三方应用应该都是可以的。联系人主要涉及"contacts"、"raw_contacts"表,URI换成 ContactsContract.Contacts.CONTENT_URI 也不行,只是没有弹框了,但依然失败。最后,换成 ContactLookupUri 成功了:

Uri contactUri = ContactsContract.RawContacts.getContactLookupUri(getContentResolver(), ContentUris.withAppendedId(ContactsContract.RawContacts.CONTENT_URI,rawContactId));

getContentResolver().delete(contactUri,null, null);

所以,小米手机上,必须使用ContactLookupUri 才能成功删除联系人。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容