Как удалить SMS из папки «Входящие» в Android программным способом? - PullRequest
96 голосов
/ 07 января 2009

На телефонах Android SMS-сообщения, зарегистрированные в приложениях, также отправляются в почтовый ящик устройства. Однако, чтобы избежать беспорядка, было бы неплохо иметь возможность удалять специфичные для приложения SMS-сообщения из входящих сообщений, чтобы уменьшить потенциальный переполнение этих сообщений.

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

Итак, сценарий:

  • Запуск приложения для Android.
  • зарегистрировать СМС-сообщения типов X, Y и Z
  • сообщения P, Q, X, Y, Z с течением времени поступают, все хранятся в папке входящих сообщений
  • Приложение Android обнаруживает получение X, Y, Z (предположительно, как часть события прерывания программы)
  • процесс X, Y, Z
  • Желание !!! X, Y, Z удалены из папки входящих сообщений Android

Это было сделано? Можно ли это сделать?

Ответы [ 18 ]

1 голос
/ 08 августа 2011

Также обновите файл манифеста, чтобы удалить смс, вам нужны разрешения на запись.

<uses-permission android:name="android.permission.WRITE_SMS"/>
1 голос
/ 21 июня 2010

Просто отключите уведомления для приложения смс по умолчанию. Обрабатывайте свои собственные уведомления для всех текстовых сообщений!

1 голос
/ 28 декабря 2010

Просто попробуйте следующий код. Он удалит все смс, которые есть в телефоне (полученные или отправленные)

Uri uri = Uri.parse("content://sms");

ContentResolver contentResolver = getContentResolver();

Cursor cursor = contentResolver.query(uri, null, null, null,
  null);



while (cursor.moveToNext()) {

 long thread_id = cursor.getLong(1);
 Uri thread = Uri.parse("content://sms/conversations/"
   + thread_id);
 getContentResolver().delete(thread, null, null);
}
1 голос
/ 27 декабря 2010

Просто посмотрите на эту ссылку, она даст вам краткое представление о логике:

https://gist.github.com/5178e798d9a00cac4ddb
Просто вызовите функцию deleteSMS () с некоторой задержкой, потому что есть небольшая разница между временем уведомления и временем его фактического сохранения ...., для получения дополнительной информации посмотрите эту ссылку также ........ ..

http://htmlcoderhelper.com/how-to-delete-sms-from-inbox-in-android-programmatically/

Спасибо ..........

0 голосов
/ 14 октября 2013
@Override
protected void onListItemClick(ListView l, View v, int position, long id) {
    SMSData sms = (SMSData) getListAdapter().getItem(position);
    Toast.makeText(getApplicationContext(), sms.getBody(),
            Toast.LENGTH_LONG).show();
    Toast.makeText(getApplicationContext(), sms.getNumber(),
            Toast.LENGTH_LONG).show();

    deleteSms(sms.getId());

}

public boolean deleteSms(String smsId) {
    boolean isSmsDeleted = false;
    try {
        MainActivity.this.getContentResolver().delete(
                Uri.parse("content://sms/" + smsId), null, null);
        isSmsDeleted = true;

    } catch (Exception ex) {
        isSmsDeleted = false;
    }
    return isSmsDeleted;
}
0 голосов
/ 03 сентября 2013

Попробуйте, я уверен на 100%: - // просто поместите адрес конвертации здесь для удаления всего конвертирования по адресу (не забудьте добавить разрешение на чтение, запись в mainfest) Вот код:

String address="put address only";

Cursor c = getApplicationContext().getContentResolver().query(Uri.parse("content://sms/"), new String[] { "_id", "thread_id", "address", "person", "date", "body" }, null, null, null);

try {
    while (c.moveToNext()) {
        int id = c.getInt(0);
        String address = c.getString(2);
        if(address.equals(address)){
        getApplicationContext().getContentResolver().delete(Uri.parse("content://sms/" + id), null, null);}
    }
} catch(Exception e) {

}
0 голосов
/ 10 декабря 2012

Используйте один из этих методов, чтобы выбрать последнее полученное SMS и удалить его, здесь в этом случае я получаю самое большое количество смс и собираюсь удалить, используя нить и значение идентификатора смс,

try {
    Uri uri = Uri.parse("content://sms/inbox");
    Cursor c = v.getContext().getContentResolver().query(uri, null, null, null, null);
    int i = c.getCount();

    if (c.moveToFirst()) {
    }
} catch (CursorIndexOutOfBoundsException ee) {
    Toast.makeText(v.getContext(), "Error :" + ee.getMessage(), Toast.LENGTH_LONG).show();
}
0 голосов
/ 22 января 2011

Пример удаления одного SMS, а не разговора:

getContentResolver().delete(Uri.parse("content://sms/conversations/" + threadID), "_id = ?", new String[]{id});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...