如何检测发送的消息?

时间:2015-10-07 08:02:23

标签: android broadcastreceiver

我正在处理消息发送和接收,我通过广播接收器获得了许多消息接收的答案,但是没有解决方案来发送消息。

<receiver
            android:name="com.test.services.MessageReciver"
            android:enabled="true"
            android:permission="android.permission.BROADCAST_SMS" >
            <intent-filter>

                <action android:name="android.provider.Telephony.SMS_DELIVER" />
                <action android:name="android.provider.Telephony.SMS_RECEIVED" />

            </intent-filter>
        </receiver>



public static final String ACTION_RECEIVED = "android.provider.Telephony.SMS_RECEIVED";
    public static final String ACTION_SENT = "android.provider.Telephony.SMS_DELIVER";

    Context context;

    @Override
    public void onReceive(Context context, Intent intent) {

// this section works only when message received on in case of sent
}

但是广播接收器仅适用于收到的消息而不是发送的消息。

2 个答案:

答案 0 :(得分:1)

您应该将PendingIntent用于SMS Sent和Delivery。 请参考以下语法:

sendTextMessage(String destinationAddress,String scAddress,String text,PendingIntent sentIntent ,PendingIntent deliveryIntent

sentIntent deliveryIntent 可用作广播操作,您可以完成所需的任务。

答案 1 :(得分:1)

这里的问题是它们实际上都是接收动作,它们的不同之处在于它们只被传送到默认的短信应用程序,而另一个被传送到所有短信应用程序。

  

public static final String SMS_DELIVER_ACTION

     

广播操作:设备已收到新的基于文本的SMS消息。此意图仅传递给默认的短信应用程序。

     

常量值:“android.provider.Telephony.SMS_DELIVER”

  

public static final String SMS_RECEIVED_ACTION

     

广播操作:设备已收到新的基于文本的SMS消息。该意图将作为通知发送给所有注册接收者。

     

常量值:“android.provider.Telephony.SMS_RECEIVED”

发送短信时没有广播的动作。

要接收已发送的短信广播,请检查