2014-09-27 61 views
0

我想在Android中發送短信到特定號碼和端口,使用下面的代碼:的Android發送短信錯誤

final String SENT = "SMS_SENT"; 
PendingIntent sent = PendingIntent.getBroadcast(context, 0, new Intent(SENT), 0); 

registerReceiver(Globals.smsReceiver, new IntentFilter(code)); 

SmsManager manager = SmsManager.getDefault(); 
manager.sendDataMessage(Globals.NUMBER, null, Globals.PORT, message.getBytes(), sent, null); 

Globals.smsReceiver是「SMSSentBroadcastReceiver」對象,這是一個子類「廣播接收機」。 Globals.PORT是5000.

但是,當代碼到達SMSSentBroadcastReceiver上的onReceive()時,它會收到一個RESULT_ERROR_GENERIC_FAILURE代碼。根據文檔,我檢查了sentIntent中的「errorCode」,它返回了42.這是什麼意思?發生了什麼以及如何發送短信?

此外,此代碼之前工作。它沒有明顯的原因停止工作,除了我將手機上的SIM卡更改爲不同的號碼。但我檢查了此卡已啓用,並可以通過默認的短信應用發送「正常」短信。

最後,我的清單也有這樣的:

<uses-permission android:name="android.permission.SEND_SMS" /> 
<uses-permission android:name="android.permission.RECEIVE_SMS" /> 

這:

<receiver android:name=".support.SMSSentBroadcastReceiver" > 
     <intent-filter> 
      <action android:name="SMS_SENT" /> 
     </intent-filter> 
</receiver> 

我怎樣才能找出「42」錯誤碼是什麼,我能做些什麼呢?

在此先感謝!

編輯:重新啓動設備沒有解決問題。仍然停留在通用故障。

編輯2:我需要發送的消息是一個小的「類似XML」的文本。但是,我只是測試過,我甚至不能發送帶有「你好」的短信。

回答

0

嘗試註冊您的接收器爲:

<receiver android:name="com.myexample.receivers.SMSReceiver" > 
     <intent-filter> 
      <action android:name="android.provider.Telephony.SMS_RECEIVED" /> 
     </intent-filter> 
</receiver> 
+0

感謝您的答覆!我應該保留舊的「SMS_SENT」還是用這個替換它。 順便說一句,爲什麼「SMS_RECEIVED」,如果我試圖發送它? – Sagito 2014-09-27 11:16:25

+0

@Sagito我的意思是說,將「SMS_SENT」替換爲「android.provider.Telephony.SMS_SENT」和完整路徑給你「SMSSentBroadcastReceiver」類如「com.myexample.receivers.SMSReceiver」 – 2014-09-29 04:48:38

+0

看看[這裏](http: //www.compiletimeerror.com/2013/10/smsmessage-delivery-in-android-with.html) – 2014-09-29 05:00:00