Удалить SMS-сообщение от android по 4.4.4 (Затронутые строки = 0 (Zero), после удаления)

Я хочу отправить SMS с моего устройства Android и удалить его из mydevice (отправленные сообщения).

SMS сохраняются на устройстве (4.4.4), но с моим кодом не удаляется SMS. после удаления строк, затронутых = 0 (нуль).

Мое устройство vesrion равно 4.4.4.

В других устройствах SMS не сохраняются. Почему SMS сохранены в Android 4.4.4?

Я не хочу сохранять отправленные sms или sms с ошибкой (которые не отправляются).

пожалуйста, помогите мне.

Мои разрешения

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

Мой код предназначен для отправки SMS

SmsManager smsManager = SmsManager.getDefault();
smsManager.sendTextMessage(number, null, msg, null, null);

Я вызываю метод deleteSMS() из обработчика с postdelay из 5 секунд

Handler handler = new Handler();
handler.postDelayed(new Runnable() {

            @Override
            public void run() {
                String message = CastApplication.mPref.getString(context.getResources().getString(R.string.pref_message_to_friend), "");
                deleteSMS(context, message, number);

                if (MyCastFragment.getInstance() != null) {
                    MyCastFragment.getInstance().updateView();
                }

                progressDialog.dismiss();
                context.finish();
            }
        }, 5000);

Удалить SMS

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

            Log.i(TAG, "c count......"+c.getCount());
            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 (body.contains(getResources().getText(R.string.invite_text).toString()) && address.equals(number)) {
                    if (message.equals(body) && address.equals(number)) {
                        // mLogger.logInfo("Deleting SMS with id: " + threadId);
                        int rows = ctx.getContentResolver().delete(Uri.parse("content://sms/" + id), "date=?",new String[] { c.getString(4) });
                        Log.e("log>>>", "Delete success......... rows: "+rows);
                        Log.e("log>>>", "Delete success......... body: "+body);
                    }
                } while (c.moveToNext());
            }

        } catch (Exception e) {
            Log.e("log>>>", e.toString());
            Log.e("log>>>", e.getMessage());
        }
    }

Ответ 1

Если ваше приложение не помечается как приложение SMS по умолчанию в устройстве, вы не сможете играть с провайдером SMS, пожалуйста, ознакомьтесь с рекомендациями по SMS для тех же KITKAT

Ответ 2

Приложение может удалить Sms в Kitkat БЕЗ ПОЛОЖЕНИЯ по умолчанию для sms.

Вам нужно только разрешение WRITE_SMS и манипуляции с AppOpps.

После этого ваши sms могут быть удалены через 10 секунд после получения, уведомление также будет презирать.