2009-06-13 3 views
24

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

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

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

+0

Поскольку API для отправки SMS-сообщений (android.telephony.gsm.SmsManager) позволяет разработчикам указывать настраиваемые намерения, которые будут транслироваться при отправке, выполняется или не выполняется, я не думаю, что можно прослушать одно сообщение sms "намерение. – Henning

+0

Привет, Йозеф, мне интересно, сделал ли он что-то еще с этим? В настоящее время я могу слушать сообщения, отправляемые через наблюдателя контента, но я хотел бы остановить отправку смс по сети GSM/CDMA и вместо этого отправить через соединение с данными. Не могли бы вы понять, как заблокировать sms от отправки по GSM/CDMA? –

ответ

21

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

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

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

+0

Hi Josef, Мне интересно, сделал ли то, что сделал? В настоящее время я могу слушать сообщения, отправляемые через наблюдателя контента, но я хотел бы остановить отправку смс по сети GSM/CDMA и вместо этого отправить через соединение с данными. Не могли бы вы понять, как заблокировать sms от отправки по GSM/CDMA? –

+1

Нет, к сожалению. Но я думаю, что * блокирование * сообщение будет еще сложнее. Я дам вам знать, если я что-то придумаю. Между тем, попробуйте задать вопрос на stackoverflow.com ;-) –

+0

Конечно, ContentObserver прекрасно работает с теми приложениями, которые фактически используют хранилище контента SMS/MMS. Какие приложения для обмена сообщениями (и все вредоносные приложения) не выполняются. – Phil

Смежные вопросы