2017-05-24 1 views
-1

Donc, fondamentalement, j'ai une fonction qui supprime le contact du téléphone:Android studio Supprimer contact

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"); 
    } 

J'ai essayé les deux options, si le contact cru ou si le contact id, tant doesn « travail t/

Quand je lance le APP et la fonction active le « contact supprimé Shows » et dans le journal:

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 

Je ne suis pas sûr si je ne comprends pas le journal ou j'ai raté quelque chose, mais quand je rentre dans la liste de contacts sur le téléphone, le contact n'est toujours pas, donc n'a pas été supprimé. J'adorerais obtenir de l'aide, merci beaucoup d'avance!

+0

Postez le chat total journal –

+0

essayez d'utiliser une solution de ce poste https://stackoverflow.com/questions/527216/how-to-remove-a-contact -programmatiquement-dans-android – Ivan86

+0

J'ai vérifié les autres solutions de ceci et d'autres messages de stackoverflow et n'a pas pu trouver une réponse qui fonctionnerait, celle ci-dessous m'a bien aidé, merci les gars pour votre aide. –

Répondre

0

essayez ceci.

classe à supprimer.

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(); 
} 
} 

et classe getId

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

Ça marche bien, merci! Je voulais vous demander si vous pourriez peut-être expliquer pourquoi mon code n'a pas fonctionné et celui-ci, aimerait dépenser mon knowlage, thx! –

+0

avez-vous eu accès à uri ?? –

+0

Ohhh je n'ai pas, d'accord je vois le problème maintenant, merci beaucoup monsieur! Passe une bonne semaine. –