mirror of
https://github.com/moparisthebest/open-keychain
synced 2024-11-30 12:32:17 -05:00
Merge pull request #1121 from adithyaphilip/rawcontact-deletion
Fixed contact deletion Issue #1120
This commit is contained in:
commit
b74fa6c662
@ -267,6 +267,35 @@ public class ContactHelper {
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* returns the CONTACT_ID of the raw contact to which a masterKeyId is associated, if the
|
||||||
|
* raw contact has not been marked for deletion
|
||||||
|
*
|
||||||
|
* @param resolver
|
||||||
|
* @param masterKeyId
|
||||||
|
* @return CONTACT_ID (id of aggregated contact) linked to masterKeyId
|
||||||
|
*/
|
||||||
|
public static long findContactId(ContentResolver resolver, long masterKeyId) {
|
||||||
|
long contactId = -1;
|
||||||
|
Cursor raw = resolver.query(ContactsContract.RawContacts.CONTENT_URI,
|
||||||
|
new String[]{
|
||||||
|
ContactsContract.RawContacts.CONTACT_ID
|
||||||
|
},
|
||||||
|
ContactsContract.RawContacts.ACCOUNT_TYPE + "=? AND " +
|
||||||
|
ContactsContract.RawContacts.SOURCE_ID + "=? AND " +
|
||||||
|
ContactsContract.RawContacts.DELETED + "=?",
|
||||||
|
new String[]{//"0" for "not deleted"
|
||||||
|
Constants.ACCOUNT_TYPE, Long.toString(masterKeyId), "0"
|
||||||
|
}, null);
|
||||||
|
if (raw != null) {
|
||||||
|
if (raw.moveToNext()) {
|
||||||
|
contactId = raw.getLong(0);
|
||||||
|
}
|
||||||
|
raw.close();
|
||||||
|
}
|
||||||
|
return contactId;
|
||||||
|
}
|
||||||
|
|
||||||
public static Bitmap getCachedPhotoByMasterKeyId(ContentResolver contentResolver, long masterKeyId) {
|
public static Bitmap getCachedPhotoByMasterKeyId(ContentResolver contentResolver, long masterKeyId) {
|
||||||
if (masterKeyId == -1) {
|
if (masterKeyId == -1) {
|
||||||
return null;
|
return null;
|
||||||
@ -398,8 +427,13 @@ public class ContactHelper {
|
|||||||
* TODO: Does this work?
|
* TODO: Does this work?
|
||||||
*/
|
*/
|
||||||
private static int debugDeleteRawContacts(ContentResolver resolver) {
|
private static int debugDeleteRawContacts(ContentResolver resolver) {
|
||||||
|
//allows us to actually wipe the RawContact from the device, otherwise would be just flagged
|
||||||
|
//for deletion
|
||||||
|
Uri deleteUri = ContactsContract.RawContacts.CONTENT_URI.buildUpon().
|
||||||
|
appendQueryParameter(ContactsContract.CALLER_IS_SYNCADAPTER, "true").build();
|
||||||
|
|
||||||
Log.d(Constants.TAG, "Deleting all raw contacts associated to OK...");
|
Log.d(Constants.TAG, "Deleting all raw contacts associated to OK...");
|
||||||
return resolver.delete(ContactsContract.RawContacts.CONTENT_URI,
|
return resolver.delete(deleteUri,
|
||||||
ContactsContract.RawContacts.ACCOUNT_TYPE + "=?",
|
ContactsContract.RawContacts.ACCOUNT_TYPE + "=?",
|
||||||
new String[]{
|
new String[]{
|
||||||
Constants.ACCOUNT_TYPE
|
Constants.ACCOUNT_TYPE
|
||||||
@ -407,7 +441,12 @@ public class ContactHelper {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private static int deleteRawContactById(ContentResolver resolver, long rawContactId) {
|
private static int deleteRawContactById(ContentResolver resolver, long rawContactId) {
|
||||||
return resolver.delete(ContactsContract.RawContacts.CONTENT_URI,
|
//allows us to actually wipe the RawContact from the device, otherwise would be just flagged
|
||||||
|
//for deletion
|
||||||
|
Uri deleteUri = ContactsContract.RawContacts.CONTENT_URI.buildUpon().
|
||||||
|
appendQueryParameter(ContactsContract.CALLER_IS_SYNCADAPTER, "true").build();
|
||||||
|
|
||||||
|
return resolver.delete(deleteUri,
|
||||||
ContactsContract.RawContacts.ACCOUNT_TYPE + "=? AND " + ContactsContract.RawContacts._ID + "=?",
|
ContactsContract.RawContacts.ACCOUNT_TYPE + "=? AND " + ContactsContract.RawContacts._ID + "=?",
|
||||||
new String[]{
|
new String[]{
|
||||||
Constants.ACCOUNT_TYPE, Long.toString(rawContactId)
|
Constants.ACCOUNT_TYPE, Long.toString(rawContactId)
|
||||||
@ -415,7 +454,12 @@ public class ContactHelper {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private static int deleteRawContactByMasterKeyId(ContentResolver resolver, long masterKeyId) {
|
private static int deleteRawContactByMasterKeyId(ContentResolver resolver, long masterKeyId) {
|
||||||
return resolver.delete(ContactsContract.RawContacts.CONTENT_URI,
|
//allows us to actually wipe the RawContact from the device, otherwise would be just flagged
|
||||||
|
//for deletion
|
||||||
|
Uri deleteUri = ContactsContract.RawContacts.CONTENT_URI.buildUpon().
|
||||||
|
appendQueryParameter(ContactsContract.CALLER_IS_SYNCADAPTER, "true").build();
|
||||||
|
|
||||||
|
return resolver.delete(deleteUri,
|
||||||
ContactsContract.RawContacts.ACCOUNT_TYPE + "=? AND " + ContactsContract.RawContacts.SOURCE_ID + "=?",
|
ContactsContract.RawContacts.ACCOUNT_TYPE + "=? AND " + ContactsContract.RawContacts.SOURCE_ID + "=?",
|
||||||
new String[]{
|
new String[]{
|
||||||
Constants.ACCOUNT_TYPE, Long.toString(masterKeyId)
|
Constants.ACCOUNT_TYPE, Long.toString(masterKeyId)
|
||||||
|
Loading…
Reference in New Issue
Block a user