Android Broadcast Receiver для отправленных SMS-сообщений?

Я создал BroadcastReceiver и настроил его с помощью фильтра действий android.provider.Telephony.SMS_RECEIVED, поэтому он вызывается каждый раз, когда телефон получает текст.

Есть ли какое-то событие / действие или другой способ уведомления моего приложения всякий раз, когда телефон отправляет текст (желательно независимо от приложения, которое его отправляет)?

Пока что единственный вариант, который я вижу, - это опрос поставщика контента на предмет content://sms/sent, который даже не дает мне всех отправленных текстов, потому что приложения могут решить не помещать его туда.


person Josef Pfleger    schedule 13.06.2009    source источник
comment
Поскольку API для отправки SMS-сообщений (android.telephony.gsm.SmsManager) позволяет разработчикам указывать настраиваемые намерения, которые будут транслироваться при успешной или неудачной отправке, я не думаю, что возможно прослушивать намерение отправки одного sms-сообщения.   -  person Henning    schedule 07.07.2009
comment
Привет, Йозеф, мне интересно, добились ли ты еще каких-то успехов в этом? В настоящее время я могу прослушивать сообщения, отправляемые через обозреватель контента, но я бы хотел, чтобы sms не отправлялись по сети GSM / CDMA и вместо этого отправлялись через соединение для передачи данных. Не могли бы вы понять, как заблокировать отправку SMS-сообщений через GSM / CDMA?   -  person Donal Rafferty    schedule 01.04.2010


Ответы (1)


К сожалению, (в настоящее время) нет возможности реализовать BroadcastReceiver, поскольку стандартный sms-приложение использует SmsManger для отправки сообщений, но указывает конкретные внутренние классы для отправленных и доставленных намерений (SmsReceiver.class и MessageStatusReceiver.class соответственно). Не то чтобы это утешало, но вы можете найти следующий комментарий в источник:

// TODO: Fix: It should not be necessary to
// specify the class in this intent.  Doing that
// unnecessarily limits customizability.

Лучшей альтернативой, по-видимому, является опрос content://sms/sent, потенциально с использованием ContentObserver.

person Josef Pfleger    schedule 07.07.2009
comment
Привет, Йозеф, мне интересно, добились ли ты еще каких-то успехов в этом? В настоящее время я могу прослушивать сообщения, отправляемые через обозреватель контента, но я бы хотел, чтобы sms не отправлялись по сети GSM / CDMA и вместо этого отправлялись через соединение для передачи данных. Не могли бы вы понять, как заблокировать отправку SMS-сообщений через GSM / CDMA? - person Donal Rafferty; 31.03.2010
comment
Нет, к сожалению. Но я думаю, что заблокировать сообщение будет еще сложнее. Я дам тебе знать, если я что-нибудь придумаю. А пока попробуйте задать вопрос на stackoverflow.com ;-) - person Josef Pfleger; 01.04.2010
comment
Конечно, ContentObserver хорошо работает только с теми приложениями, которые фактически используют хранилище содержимого SMS / MMS. Чего не делают некоторые приложения для обмена сообщениями (и все вредоносные приложения). - person Phil Haigh; 02.10.2013