2015-10-07 108 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

我編輯了這個問題,請重新檢查,讓我知道你心中最新注意事項 –