Android Studio: Удалить отправленные и полученные смс на определенный номер - PullRequest
0 голосов
/ 18 октября 2019

Хотелось бы узнать, как удалить отправленные и полученные SMS на определенный номер. Мое приложение соединяется с модулем GSM с другим устройством и отправляет и получает SMS-сообщения. Я хотел бы удалить эти SMS. Ниже мой код:

@Override
    public void onReceive(Context context, Intent intent) {
        if (Objects.equals(intent.getAction(), SMS_RECEIVED)) {
            String smsSender = "";
            String smsBody = "";
            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
                StringBuilder smsBodyBuilder = new StringBuilder();
                for (SmsMessage smsMessage : Telephony.Sms.Intents.getMessagesFromIntent(intent)) {
                    smsSender = smsMessage.getDisplayOriginatingAddress();
                    smsBodyBuilder.append(smsMessage.getMessageBody());
                }
                smsBody = smsBodyBuilder.toString();
            } else {
                Bundle smsBundle = intent.getExtras();
                if (smsBundle != null) {
                    Object[] pdus = (Object[]) smsBundle.get("pdus");
                    if (pdus == null) {
                        // Display some error to the user
                        return;
                    }
                    SmsMessage[] messages = new SmsMessage[pdus.length];
                    StringBuilder smsBodyBuilder = new StringBuilder();
                    for (int i = 0; i < messages.length; i++) {
                        messages[i] = SmsMessage.createFromPdu((byte[]) pdus[i]);
                        smsBodyBuilder.append(messages[i].getMessageBody());
                    }
                    smsBody = smsBodyBuilder.toString();
                    smsSender = messages[0].getOriginatingAddress();
                }
            }

            if (smsSender != null) {
                if (smsSender.equals(serviceProviderNumber) && smsBody.startsWith(serviceProviderSmsCondition)) {
                    this.pdCanceller.removeCallbacks(this.progressRunnable);
                    this.message = smsBody;
                    context.unregisterReceiver(broadcastReceiver);
                    progressDialog.cancel();
                    SmsReceiverDialog smsReceiverDialog = new SmsReceiverDialog(this.activity, this.context, this.message);

                    checkCommand(smsBody, smsReceiverDialog); // call correctly function from list
                    context.getContentResolver().delete(Uri.parse("content://sms/"), "address=?", new String[]{smsSender});
                }
            }
        }
    }

Исходный код перехватывает смс сообщения. У меня проблема с предложением где. Удаление SMS не работает.

1 Ответ

0 голосов
/ 18 октября 2019

Кредиты на ответ «Максима Дмитриева» из удаление-android-sms-программно

Обратите внимание, что вы не можете удалять SMS-сообщения на устройствах с Android 4.4.

Кроме того, теперь система позволяет только приложению по умолчанию записывать данные сообщений поставщику, хотя другие приложения могут читать в любое время.

http://developer.android.com/about/versions/kitkat.html

Никаких исключений не будет выдано, если вы попытаетесь;ничего не будет удалено.

...