Android MIUI 删除联系人

2023-06-10  本文已影响0人  Candy666

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

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 才能成功删除联系人。

上一篇下一篇

猜你喜欢

热点阅读