2014-01-28 2 views
0

긴 SMS를 보내려면 다음 코드를 작성하십시오. 왜 내가 브로드 캐스트를받지 못합니까?

당신이 코드에서 볼 수 있듯이

나는 부분에 긴 시험을 절단하고 나는 (전달 SMS 설정 및 SMS에 대한) PendingIntents의 ArrayList를 제공 SmsManager

와 부품을 보낼 수 있습니다.

I는 PendingIntents에 대해 2 개의 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

수신자를 manifast에 정의 했습니까? –

+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" /> 
관련 문제