2010-04-28 71 views
13

如何接收到特定端口的文本短信?我一直在尋找這個問題的答案,但無濟於事。這已被問了幾次,但似乎沒有人有明確的答案。我的代碼如下:如何接收到特定端口的文本短信。

--MANIFEST FILE--

<receiver android:name=".SMSRecieve" android:enabled="true"> 
<intent-filter> 
<action android:name="android.intent.action.DATA_SMS_RECEIVED"/> 
<data android:scheme="sms" /> 
<data android:host="localhost" /> 
<data android:port="15005" /> 
</intent-filter> 
</receiver>

--SMS發送method--

String messageText = msgTxt.getText().toString(); 
short SMS_PORT = 15005; 
SmsManager smsManager = SmsManager.getDefault(); 
smsManager.sendDataMessage("5556", null, SMS_PORT, messageText.getBytes(), null, null);

--Broadcast接收機代碼 -

static final String ACTION = "android.intent.action.DATA_SMS_RECEIVED"; 
//static final String ACTION = "android.provider.Telephony.SMS_RECEIVED";(tried this too, but failed) 

if (intent.getAction().equals(SMSNotifyExample.ACTION)) { 
...do some work.. 
}

我也嘗試將android:name更換爲android.provider.Telephony.SMS_RECEIVED,但結果相同。

我的應用程序沒有收到指定端口上的SMS。一旦我刪除以下行它工作正常:

<data android:scheme="sms" /> 
<data android:host="localhost" /> 
<data android:port="15005" />

你能建議我缺少什麼?

+0

有這個問題的賞金。我真的需要這個答案,所以我希望有人看到它,並有一個答案。 – 2010-09-23 02:39:45

回答

2

感謝您的提示!

我用這個和它的作品:

 <receiver android:name=".SMSReceiver"> 
     <intent-filter android:priority="10"> 
     <action android:name="android.intent.action.DATA_SMS_RECEIVED" /> 
      <data android:scheme="sms" /> 
      <data android:port="50009" /> 
     </intent-filter> 
    </receiver> 
2

[注:我已經下面提到的代碼是不是在模擬器上成功,但在我的LG P350工作具有的Android V2.3]

我已經使用上mobiForge給出演示的代碼,但已經改變了sendTextMessage()sendDataMessage()與PORT_NO爲8901(也被轉換的文本數據爲byte []數據)。 我的接收機是:

<receiver android:name=".SMSReceiver"> 
     <intent-filter> 
     <action android:name="android.intent.action.DATA_SMS_RECEIVED" /> 
      <data android:scheme="sms" /> 
      <data android:port="8901" /> 
     </intent-filter> 
</receiver> 

工作示例是KRVarma's SMSDemo這也是有功能的。