正常情況下播玖,刪除聯(lián)系人可以使用如下代碼:
getContentResolver().delete(ContactsContract.RawContacts.CONTENT_URI, ContactsContract.Contacts.DISPLAY_NAME + "=?", new String[]{name});
但是在MIUI中坊罢,卻失敗了锋叨,彈出如下對(duì)話框:
通過(guò)系統(tǒng)log可以發(fā)現(xiàn):
pkg: com.android.providers.contacts activity: com.miui.providers.contacts.ContactsDeletionDialog只壳。
即這是系統(tǒng)聯(lián)系人數(shù)據(jù)庫(kù)彈出的界面玛瘸,且是MIUI定制增加的璧针,并非AOSP邏輯。
從對(duì)話框內(nèi)容可以看出捅厂,MIUI為了保護(hù)信息安全,禁止第三方app刪除聯(lián)系人资柔。難道小米真的不允許第三方app刪除聯(lián)系人焙贷?不應(yīng)該啊,很多第三方應(yīng)用應(yīng)該都是可以的贿堰。聯(lián)系人主要涉及"contacts"辙芍、"raw_contacts"表,URI換成?ContactsContract.Contacts.CONTENT_URI 也不行羹与,只是沒(méi)有彈框了故硅,但依然失敗外遇。最后,換成?ContactLookupUri 成功了:
Uri contactUri = ContactsContract.RawContacts.getContactLookupUri(getContentResolver(), ContentUris.withAppendedId(ContactsContract.RawContacts.CONTENT_URI,rawContactId));
getContentResolver().delete(contactUri,null, null);
所以契吉,小米手機(jī)上跳仿,必須使用ContactLookupUri 才能成功刪除聯(lián)系人。