2017-05-24 3 views
-1

i So haben im Grunde eine Funktion, die den Kontakt aus dem Telefon löscht:Android Studio Kontakt löschen

String[] args = new String[]{number}; 
try { 

     ArrayList ops = new ArrayList(); 
     // if id is raw contact id 
     ops.add(ContentProviderOperation.newDelete(ContactsContract.RawContacts.CONTENT_URI).withSelection(ContactsContract.RawContacts._ID + "=?", args).build()); 
     // if id is contact id 
     // ops.add(ContentProviderOperation.newDelete(ContactsContract.RawContacts.CONTENT_URI).withSelection(ContactsContract.RawContacts.CONTACT_ID + "=?", args).build()); 
     getContentResolver().applyBatch(ContactsContract.AUTHORITY, ops); 
     Toast.makeText(this, "Contact Deleted", Toast.LENGTH_SHORT).show(); 


    } catch (Exception e) { 

     Log.e("$$$$", "ERRORDELETE#133"); 
    } 

Ich habe versucht, beide Optionen, wenn rohe Kontakt oder wenn der Kontakt-ID, die beide doesn ‚t Arbeit/

Wenn ich ausführen, um die APP und die Funktion aktiviert den‚Kontakt Deleted‘Shows und im Protokoll:

05-24 15:40:16.444 6540-6540/com.assistme.meirovichomer.assistme E/ViewRootImpl: sendUserActionEvent() mView == null 
05-24 15:40:16.464 6540-6679/com.assistme.meirovichomer.assistme V/RenderScript: Application requested CPU execution 
05-24 15:40:16.474 6540-6679/com.assistme.meirovichomer.assistme V/RenderScript: 0xa14a7e00 Launching thread(s), CPUs 4 

Ich bin mir nicht sicher, ob ich das Protokoll einfach nicht verstehe oder etwas verpasst habe, aber wenn ich die Kontaktliste auf dem Telefon eingebe, ist der Kontakt immer noch nicht da, deshalb wurde es nicht gelöscht. Würde mich freuen, etwas Hilfe zu bekommen, Vielen Dank im Voraus!

+0

post die Katze total log –

+0

versuchen, eine Lösung für diesen Beitrag mit https://stackoverflow.com/questions/527216/how-to-remove-a-contact -programmatically-in-android – Ivan86

+0

Ich habe die anderen Lösungen von diesem und anderen stackoverflow Beiträge überprüft und konnte keine Antwort finden, die funktionieren würde, die eine unten half mir tatsächlich, danke Jungs für Ihre Hilfe. –

Antwort

0

versuchen Sie dies.

Klasse zum Löschen.

public static void deleteContact(ContentResolver contactHelper, String 
number) { 
ArrayList<ContentProviderOperation> ops = new 
ArrayList<ContentProviderOperation>(); 
String[] args = new String[] { String.valueOf(getContactID(contactHelper, 
number))}; 
ops.add(ContentProviderOperatio.newDelete(RawContacts.CONTENT_URI).withSelecti 
    on(RawContacts.CONTACT_ID + "=?", args).build()); 
try { 
    contactHelper.applyBatch(ContactsContract.AUTHORITY, ops); 
    } catch (RemoteException e) { 
    e.printStackTrace(); 
} catch (OperationApplicationException e) { 
e.printStackTrace(); 
} 
} 

und getid Klasse

private static long getContactID(ContentResolver contactHelper,String 
number) { 
Uri contactUri = Uri.withAppendedPath(PhoneLookup.CONTENT_FILTER_URI, 
Uri.encode(number)); 
String[] projection = { PhoneLookup._ID }; 
Cursor cursor = null; 
try { 
cursor = contactHelper.query(contactUri, projection, null, null,null); 
if (cursor.moveToFirst()) { 
int personID = cursor.getColumnIndex(PhoneLookup._ID); 
return cursor.getLong(personID); 
} 
return -1; 
} catch (Exception e) { 
e.printStackTrace(); 
} finally { 
if (cursor != null) { 
cursor.close(); 
cursor = null; 
} 
} 
return -1; 
} 
+0

Es funktioniert gut, danke! Ich wollte dich fragen, ob du vielleicht erklären könntest, warum mein Code nicht funktioniert hat und das tut, würde mein Wissen gerne aufbrauchen, thx! –

+0

hast du auf uri zugreifen ?? –

+0

Ohhh ich nicht, in Ordnung sehe ich das Problem jetzt, vielen Dank Herr! Hab eine großartige Woche. –

Verwandte Themen