2014-09-27 4 views
0

Я пытаюсь отправить SMS в Android на определенный номер и порт, используя следующий код:Android Отправить SMS Ошибка

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» объект, который является подклассом «BroadcastReceiver». Globals.PORT - 5000.

Однако, когда код достигает значения на REceive() на SMSSentBroadcastReceiver, он получает код RESULT_ERROR_GENERIC_FAILURE. Согласно документации, я проверил «errorCode» в sendIntent и вернулся 42. Что это значит? Что происходит и как я могу отправить SMS?

Кроме того, этот код работал раньше. Он прекратил работать без видимых причин, за исключением того, что я сменил SIM-карту на мобильном устройстве на другой номер. Но я проверил, что эта карта включена и может отправлять «обычные» SMS через SMS-приложение по умолчанию.

Наконец, мой Manifest также это:

<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" ERRORCODE является и то, что я могу поделать?

Заранее благодарен!

EDIT: перезагрузка устройства не решила проблему. Все еще застрял при родовом отказе.

EDIT 2: Сообщение, которое мне нужно отправить, представляет собой небольшой «XML-подобный» текст. Тем не менее, я просто протестировал, и я даже не могу отправить SMS с «Hello».

ответ

0

Попробуйте зарегистрировать приемник, как:

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

Спасибо за ваш ответ! Должен ли я хранить старый «SMS_SENT» или просто заменить его на этот. Btw, почему «SMS_RECEIVED», если я пытаюсь его отправить? – Sagito

+0

@Sagito Я хочу сказать, что заменить «SMS_SENT» на «android.provider.Telephony.SMS_SENT» и полный путь к вам «класс SMSSentBroadcastReceiver», например «com.myexample.receivers.SMSReceiver» –

+0

Посмотрите на [здесь] (http: //www.compiletimeerror.com/2013/10/smsmessage-delivery-in-android-with.html) –

Смежные вопросы