你好〜当我们在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恢复这些已删除的数据? 谢谢