我创建了BroadcastReceiver
并使用android.provider.Telephony.SMS_RECEIVED
操作过滤器对其进行了配置,因此每次手机接收文本时都会调用该过滤器。
当电话发送一个文本(最好是独立于发送它的应用程序)时,是否有某些事件/操作或其他方式可以通知我的应用程序?
到目前为止,我看到的唯一选项是轮询content://sms/sent
的内容提供商,它甚至不会向我发送所有已发送的文本,因为应用程序可以选择不将其放在那里。
答案 0 :(得分:21)
不幸的是(目前)没有办法实现BroadcastReceiver
,因为标准的sms应用程序使用SmsManger
来发送消息,但是为发送和传递的意图指定了具体的内部类({{1分别是}和SmsReceiver.class
。并不是说它有任何安慰,但您可以在Sms应用程序的source中找到以下注释:
MessageStatusReceiver.class
最好的选择似乎是轮询// TODO: Fix: It should not be necessary to
// specify the class in this intent. Doing that
// unnecessarily limits customizability.
,可能使用ContentObserver
。