2016-08-14 1 views
1

Je souhaite supprimer les messages d'un numéro de contact particulier par programme dans Android Lollipop et Marshmallow.Supprimer un message de la boîte de réception ou envoyé par programme dans Android lollipop et marshmallow

J'utilise le code suivant pour lire et supprimer les messages ... mais ce code ne supprime pas les messages:

public List<Sms> getAllSms() { 
    try { 
     List<Sms> lstSms = new ArrayList<Sms>(); 
     Sms objSms = new Sms(); 
     Uri uriSms = Uri.parse("content://sms/"); 

     Cursor c = getActivity().getContentResolver().query(uriSms, new String[]{"_id", "thread_id", "address", "person", "date", "body"}, null, null, null); 

     getActivity().startManagingCursor(c); 
     int totalSMS = c.getCount(); 
     if (c.moveToFirst()) { 
      for (int i = 0; i < totalSMS; i++) { 
       long id = c.getLong(0); 
       long threadId = c.getLong(1); 
       String address = c.getString(2); 
       String body = c.getString(5); 
       String date = c.getString(3); 

       Log.e("log>>>", 
        "0--->" + c.getString(0) + "1---->" + c.getString(1) 
          + "2---->" + c.getString(2) + "3--->" 
          + c.getString(3) + "4----->" + c.getString(4) 
          + "5---->" + c.getString(5)); 
       Log.e("log>>>", "date" + c.getString(0)); 

       if (address.equals("1234567890")) { 
        // mLogger.logInfo("Deleting SMS with id: " + threadId); 

        getContext().getContentResolver().delete(
         Uri.parse("content://sms/" + id), null, null); 

        Log.e("log>>>", "Delete success........."); 
       } 
       c.moveToNext(); 
      } 
     } else { 
      throw new RuntimeException("You have no SMS "); 
     } 
     c.close(); 
     return lstSms; 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
    return null; 
} 

autorisations Manifest:

<uses-permission android:name="android.permission.WRITE_SMS"/> 
<uses-permission android:name="android.permission.READ_SMS"/> 

S'il vous plaît aidez-moi au sujet de supprime les messages.

OU

me suggérer une façon de faire ce qui suit:

Si je vous envoie un message en arrière-plan programatically tant dans la version ci-dessus Android, alors il ne devrait pas enregistrer les messages dans le dossier envoyé ou partout dans le dispositif.

Répondre

4

Je veux supprimer un message du numéro de téléphone particulier par programme dans Android Lollipop et guimauve

Vous devrez écrire un client SMS complet.

Vous ne pouvez pas implémenter une application qui supprime uniquement les messages au niveau API 19 et supérieur. L'utilisateur ne fera pas de votre application l'application SMS par défaut sur l'appareil. Si votre application n'est pas l'application SMS par défaut, "votre application n'est pas en mesure d'écrire dans le fournisseur SMS pour d'autres opérations, comme marquer des messages comme brouillons, les marquer comme lus, les supprimer, etc." Voir this official blog post pour plus. Dites-moi la façon dont si j'envoie un message en arrière-plan par programmation à la fois dans la version android ci-dessus. La décision de ce qui se passe avec les messages SMS envoyés est faite entre Android, le client SMS par défaut de l'utilisateur, et éventuellement l'utilisateur. Vous n'obtenez pas de vote.