2015-10-07 109 views
0

我正在处理消息的发送和接收,我通过广播接收器收到了许多消息接收的答案,但是没有发送消息的解决方案。如何检测发送的消息?

<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 
} 

但是,只有消息的广播接收器接收到的工作不是为发送的消息。

回答

1

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

sendTextMessage(字符串目的地地址,字符串scAddress,字符串的文字,的PendingIntent sentIntent,的PendingIntent deliveryIntent

sentIntentdeliveryIntent可以用作广播动作你可以完成你想要的任务。

+0

感谢,但我发送从默认消息应用程序的消息。我想检测从设备默认应用程序发送currnlty的消息,而不是来自定制应用程序。 –

+0

OP不想发送短信,他想要检测何时发送短信 –

1

这里的问题是,它们实际上都是接收操作,它们的区别在于一个只传送给默认的短信应用程序,而另一个传送到所有的短信应用程序。

public static final String SMS_DELIVER_ACTION

广播事件:一个新的基于文本的短信已经被设备接收。这个意图只会被传送到默认的短信应用程序。

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


public static final String SMS_RECEIVED_ACTION

广播事件:一个新的基于文本的短信已经被设备接收。这个意图将作为通知发送给所有注册的接收者。

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

没有当发送短信是广播动作。

对于接受发来的短信广播,检查

+0

您好,你可以扩展你想说什么。 –

+0

@AmitSharma''android.provider.Telephony.SMS_DELIVER“'不适用于发送的短信,也适用于收到的短信。名称很混乱 –

+0

我编辑了这个问题,请重新检查,让我知道你心中最新注意事项 –