Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Programmatically delete SMS doesn't work

I am trying to delete the SMS inside my emulator. But after trying all examples here, it still doesn't work.

I dont even get an error. Inside my activity I create a BroadcastReceiver, which reacts to incoming SMS. Then when the processing is done, the SMS should be deleted. But I am not able to delete any message, even if I try to delete them all. But I can read the content.

Maybe someone has an idea? Here's my code so far:

@Override
public void onResume() {
    super.onResume();
    //registerReceiver(mMessageReceiver, new IntentFilter(Constants.BROADCAST_SMS));
    //  IntentFilter customIntentFiler = new     IntentFilter("android.provider.Telephony.SMS_RECEIVED");
    //customIntentFiler.setPriority(1000);
    registerReceiver(mMessageReceiver, new IntentFilter("android.provider.Telephony.SMS_RECEIVED"));
    // registerReceiver(mMessageReceiver, customIntentFiler);
}
@Override
protected void onPause() {
    super.onPause();
    unregisterReceiver(mMessageReceiver);
}

//This is the handler that will manage to process the broadcast intent
private BroadcastReceiver mMessageReceiver = new BroadcastReceiver() {
    @Override
    public void onReceive(Context context, Intent intent) {
        // Extract data included in the Intent

        Bundle bundle = intent.getExtras();
        if (bundle != null) {

            Log.d("[" + Constants.SERVICE_SMS + "] " + "SMS received");

            Object[] pdus = (Object[])bundle.get("pdus");
            SmsMessage sms = SmsMessage.createFromPdu((byte[])pdus[0]);



            //check if SMS content 

            Log.d("[" + Constants.SERVICE_SMS + "] " + "SMS data:" +     sms.getMessageBody().toString());
            SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);

            String[] smsParts = sms.getMessageBody().toString().split(";");


            //ToDo filter logic
        }
    }
}; 

private void DeleteSMS(Context context, Intent intent){
  try {
 // mLogger.logInfo("Deleting SMS from inbox");
Uri uriSms = Uri.parse("content://sms/inbox");
Cursor c = context.getContentResolver().query(uriSms, new String[] { "_id", "thread_id", "address", "person",
    "date", "body" }, null, null, null); 

      Log.d(Constants.TAG, "[" + Constants.SERVICE_SMS + "] " + "Deleting SMS" + uriSms);

      //getContentResolver().delete(Uri.parse("content://sms/1"), 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);
        Log.d(Constants.TAG, "[" + Constants.SERVICE_SMS + "] " + "Deleting SMS ID"+ id);
        Log.d(Constants.TAG, "[" + Constants.SERVICE_SMS + "] " + "Deleting SMS threadID" + threadId);
        Log.d(Constants.TAG, "[" + Constants.SERVICE_SMS + "] " + "Deleting SMS address" + address);
        Log.d(Constants.TAG, "[" + Constants.SERVICE_SMS + "] " + "Deleting SMS body" + body);
        getContentResolver().delete(Uri.parse("content://sms/inbox/" + id), null, null);
        //getContentResolver().delete(Uri.parse("content://sms/inbox/" + threadId), null, null);
    } while (c.moveToNext());
        }
    } catch (Exception e) {
        // mLogger.logError("Could not delete SMS from inbox: " +
        // e.getMessage());
      Log.d(Constants.TAG, "[" + Constants.SERVICE_SMS + "] " + "Deleting SMS failed");
    }
}

The start of my Manifest looks like this:

<uses-sdk 
    android:minSdkVersion="16"
    android:targetSdkVersion="21" />

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />
<uses-permission android:name="android.permission.RECEIVE_SMS"/>
<uses-permission android:name="android.permission.WRITE_SMS"/>
<uses-permission android:name="android.permission.READ_SMS"/>
like image 530
JanScott Avatar asked Oct 20 '22 03:10

JanScott


1 Answers

If you are trying this application after kitkat it won't work.

http://android-developers.blogspot.com.tr/2013/10/getting-your-sms-apps-ready-for-kitkat.html?m=1

See sms blockers in play store, they will inform you the same thing.

like image 195
Abdullah Tellioglu Avatar answered Nov 03 '22 06:11

Abdullah Tellioglu