2014-01-28 3 views
0

У меня есть следующий код для отправки длинных SMS.Почему я не получаю трансляцию?

Как вы можете видеть в коде я укоротить длинный тест на части и я посылаю части с SMSManager

обеспечивая ArrayList из PendingIntents (для SMS набора и SMS доставлено).

Я регистрирую два BroadcastReceivers для PendingIntents.

Проблема заключается в том, что BroadcastReceivers, кажется, не получают ничего, и поэтому они остаются там висеть, ожидая трансляции, что не по-видимому, никогда не приходит ...

public void sendViaSms(String nexmoNumber, String message) { 
    initSmsReceivers(); 

    SmsManager sms = SmsManager.getDefault(); 
      //CREATE THE PARTS OF THE SMS 
    ArrayList<String> parts =sms.divideMessage(message); 
    int numParts = parts.size(); 
    ArrayList<PendingIntent> sentIntents = new ArrayList<PendingIntent>(); 
    ArrayList<PendingIntent> deliveryIntents = new ArrayList<PendingIntent>(); 
    //POPULATE THE ARRAY OF PENDINGINTENTS 
      for (int i = 0; i < numParts; i++) { 
    sentIntents.add(PendingIntent.getBroadcast(MessageCompose.this, 0, new Intent(SENT), 0)); 
    deliveryIntents.add(PendingIntent.getBroadcast(MessageCompose.this, 0, new Intent(DELIVERED), 0)); 
    } 
      //SEND THE SMS IN PARTS WITH THE ARRAY OF PENDINGINTENTS 
    sms.sendMultipartTextMessage(nexmoNumber,null, parts, sentIntents, deliveryIntents); 
} 

    //CREATE AND REGISTER THE BROADCASTRECEIVERS 
private void initSmsReceivers() { 
    if (receiversInitialized) { 
     return; 
    } 

    receiversInitialized = true; 

    sendBroadcastReceiver = new BroadcastReceiver() { 

     public void onReceive(Context contex, Intent intent) { 
      switch (getResultCode()) { 
      case SmsManager.RESULT_ERROR_GENERIC_FAILURE: 
      case SmsManager.RESULT_ERROR_NO_SERVICE: 
      case SmsManager.RESULT_ERROR_NULL_PDU: 
      case SmsManager.RESULT_ERROR_RADIO_OFF: 
       progressDialog.cancel(); 
       showMessage(R.string.error, R.string.email_send_failed); 
       break; 
      } 
     } 
    }; 

    deliveryBroadcastReceiver = new BroadcastReceiver() { 
     @Override 
     public void onReceive(Context contex, Intent intent) { 
      if (!progressDialog.isShowing()) { 
       return; 
      } 

      switch (getResultCode()) { 
      case Activity.RESULT_OK: 
       showSuccessDialog(); 
       break; 
      default: 
       showMessage(R.string.error, R.string.email_send_failed); 
       break; 
      } 

      progressDialog.cancel(); 


     } 
    }; 

    MessageCompose.this.registerReceiver(deliveryBroadcastReceiver, 
      new IntentFilter(DELIVERED)); 
    MessageCompose.this.registerReceiver(sendBroadcastReceiver, 
      new IntentFilter(SENT)); 

} 
+0

Вы определили свои приемники в манифесте? –

+0

Убедитесь, что у вас есть разрешения – betorcs

ответ

1

У вас есть разрешение объявлено в манифесте ? (используйте присвоенный)

 <uses-permission android:name="android.permission.RECEIVE_SMS" /> 
     <uses-permission android:name="android.permission.READ_SMS" /> 
     <uses-permission android:name="android.permission.SEND_SMS" /> 
Смежные вопросы