2014-09-27 45 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