我们可以从联系人内容提供商加载已删除的联系人数据

时间:2013-11-21 14:34:16

标签: android contacts android-contentprovider android-contacts

你好〜当我们在android中删除联系人时,android只设置raw_contacts.deleted = 1。可以在SQLiteAdmin或其他工具的“数据”表中找到已删除联系人的所有数据。 我想加载这些已删除的联系人的数据,但它不起作用。如下所示:

    private void restoreContactsData() {
    Uri idUri=Uri.parse("content://com.android.contacts/raw_contacts");
    Uri dataUri=Uri.parse("content://"+ContactsContract.AUTHORITY+"/data");
    Cursor c=cr.query(idUri, new String[]{"_id"}, "deleted=1", null, null);
    StringBuilder sb=new StringBuilder();
    while(c.moveToNext()){
        int deletedRawContactId=c.getInt(0);
        sb.append("rawId="+deletedRawContactId).append("\n\t");
        Cursor dataCursor=cr.query(dataUri, 
                    new String[]{"data1"},
                    "row_contact_id="+deletedRawContactId, 
                    null, 
                    null);
            while(dataCursor.moveToNext()){
                String phone=dataCursor.getString(0);
                sb.append(phone).append("\n");
            }
        }
    tv.setText(sb.toString());
}

我试图将常量VISIBLE_CONTACTS_ONLY = false设置为参数,但我也不会工作。

上面的方法可以找到删除的raw_contact ids.BUT当我使用这些id来查询“数据”表时,它什么都不返回。 如果我将contacts2.db文件从模拟器中拉出来,我可以在“数据”表中找到与删除的raw_contact相关联的数据。

问题是,我是否可以从联系人的contentprovider恢复这些已删除的数据? 谢谢

0 个答案:

没有答案