2010-04-28 52 views
13

Cách nhận tin nhắn văn bản tới một cổng cụ thể? Tôi đã tìm kiếm câu trả lời cho câu hỏi này nhưng vô ích. Điều này đã được hỏi một vài lần nhưng không ai có vẻ có một câu trả lời rõ ràng. Mã của tôi là như sau:cách nhận tin nhắn văn bản đến cổng cụ thể ..

--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 gửi 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 Receiver code--

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

Tôi cũng đã cố gắng thay thế android:name thành android.provider.Telephony.SMS_RECEIVED nhưng kết quả là như nhau.

Ứng dụng của tôi không nhận được SMS trên cổng được chỉ định. Khi tôi loại bỏ các dòng sau nó hoạt động tốt:

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

bạn có thể đề nghị những gì tôi bị mất?

+0

Có tiền thưởng cho câu hỏi này. Tôi thực sự cần điều này trả lời quá, vì vậy tôi hy vọng ai đó nhìn thấy nó và có một câu trả lời. –

Trả lời

2

Cảm ơn gợi ý!

tôi sử dụng này và nó hoạt động:

 <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

[LƯU Ý: Mã mà tôi đã đề cập dưới đây không hoạt động trên giả lập nhưng thành công trên LG P350 của tôi có V2.3 Android]

tôi đã sử dụng mã bản demo đưa ra trên mobiForge nhưng đã thay đổi sendTextMessage() để sendDataMessage() với PORT_NO như 8901 (cũng chuyển đổi dữ liệu văn bản để byte [] data). nhận của tôi là:

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

Một ví dụ làm việc là KRVarma's SMSDemo đó cũng là chức năng.

Các vấn đề liên quan