2014-01-28 157 views
0

我有以下代码发送长的短信。为什么我没有收到广播?

正如你可以在代码中看到我截断了长时间的测试零​​件和 我与SmsManager

提供(发送短信集和SMS)PendingIntents的ArrayList发送的部分。

我为PendingIntents注册了两个BroadcastReceivers。

的问题是,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" />