2012-02-22 14 views
8

से एक एसएमएस हटाएं उपयोगकर्ता द्वारा पढ़े जाने के बाद मैं इनबॉक्स से एक एसएमएस हटाना चाहता हूं। यह कैसे करना है?इनबॉक्स

संपादित करें:

सार्वजनिक वर्ग SmsReceiver फैली BroadcastReceiver {

@Override 
public void onReceive(Context context, Intent intent) { 
    // TODO Auto-generated method stub 

    Bundle bundle = intent.getExtras();   
    SmsMessage[] msgs = null; 
    String address = null; 

    if(bundle!=null) { 
     String info = " "; 
     Object[] pdus = (Object[]) bundle.get("pdus"); 
     msgs = new SmsMessage[pdus.length]; 

     for (int i=0; i<msgs.length; i++) { 
      msgs[i] = SmsMessage.createFromPdu((byte[])pdus[i]);     
       address=msgs[i].getDisplayOriginatingAddress(); 
       info += msgs[i].getMessageBody().toString(); 

     } 
     /*String str=bundle.getString("state"); 
     Log.v("State",str);*/ 

     if((PhoneNumberUtils.isWellFormedSmsAddress(address))){    //set ! and address length 

     //abortBroadcast(); 
     Log.v("phone num","wellformed"); 
      Uri deleteUri = Uri.parse("content://sms"); 

      Cursor c = context.getContentResolver().query(deleteUri, null, null, 
        null, null); 
      while (c.moveToNext()) { 
       try { 
        // Delete the SMS 
        String pid = c.getString(0); // Get id; 
        String uri = "content://sms/conversations/" + pid; 
        context.getContentResolver().delete(Uri.parse(uri), 
          null, null); 
       } catch (Exception e) { 
        Log.v("exception","occurred"); 
       } 
      } 

     } 

    } 
} 

}

क्या इस कोड के साथ गलत क्या है? एसएमएस हटा दी जाती है नहीं हो रही

उत्तर

12

आप इनबॉक्स से एसएमएस को हटाने के लिए विधि निम्न का उपयोग कर सकते हैं,

private void deleteMessage() 
{ 
    Cursor c = getContentResolver().query(SMS_INBOX, null, null, null, null); 
    //c.moveToFirst(); 

    while (c.moveToNext()) 
    { 
     System.out.println("Inside if loop"); 

     try 
     { 
      String address = c.getString(2); 
      String MobileNumber = mainmenu.getParameterData().getMobileNumber().trim(); 

      //Log.i(LOGTAG, MobileNumber + "," + address); 

      Log.i(LOGTAG, c.getString(2)); 


      if (address.trim().equals(MobileNumber)) 
      { 
       String pid = c.getString(1); 
       String uri = "content://sms/conversations/" + pid; 
       getContentResolver().delete(Uri.parse(uri), null, null); 
       stopSelf(); 
      } 
     } 
     catch (Exception e) 
     { 
      e.printStackTrace(); 
     } 
    } 
} 
+0

इस कोड को सभी इनबॉक्स को नष्ट करेगा संदेश – Erum

+0

एंड्रॉइड संस्करण 4.3 – NarendraJi

+0

पर काम नहीं कर रहा है यह 5.0 में काम करेगा। एक ही कोड का उपयोग कर मेरे कर्सर को खाली कर रहा है। – Akshat

10

को हटाने के लिए पूर्ण समाधान के लिए इस कोशिश ...

public void deleteSMS(Context context, String message, String number) { 
    try { 
     Uri uriSms = Uri.parse("content://sms/inbox"); 
     Cursor c = context.getContentResolver().query(
       uriSms, 
       new String[] { "_id", "thread_id", "address", "person", 
         "date", "body" }, "read=0", null, null); 

     if (c != null && c.moveToFirst()) { 
      do { 
       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) + "<-1>" 
           + c.getString(3) + "4>" + c.getString(4) 
           + "5>" + c.getString(5)); 
       Log.e("log>>>", "date" + c.getString(0)); 

       if (message.equals(body) && address.equals(number)) { 
        // mLogger.logInfo("Deleting SMS with id: " + threadId); 
        context.getContentResolver().delete(
          Uri.parse("content://sms/" + id), "date=?", 
          new String[] { c.getString(4) }); 
        Log.e("log>>>", "Delete success........."); 
       } 
      } while (c.moveToNext()); 
     } 
    } catch (Exception e) { 
     Log.e("log>>>", e.toString()); 
    } 
} 
+0

हाँ, यह मेरे लिए काम किया। – Tomcat

संबंधित मुद्दे