There are many questions about it, no answers are working in my application 🙁
I need to remove SMS from a receiver, even if the user can see it, but it must be removed programmatically.
How can I do it?
The most suitable I have used was the following, but it doesn’t work 🙁
context.getContentResolver().delete( deleteUri, "address=? and date=?", new String[] { msg.getOriginatingAddress(), String.valueOf(msg.getTimestampMillis()) });
Advertisement
Answer
After refactoring my code I found that next solution works:
private int deleteMessage(Context context, SmsMessage msg) { Uri deleteUri = Uri.parse("content://sms"); int count = 0; 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/" + pid; count = context.getContentResolver().delete(Uri.parse(uri), null, null); } catch (Exception e) { } } return count; }
Reminder: Using catch(Exception)
is not recommended.