2012-09-30 5 views
2

Hy, 내 큰 문제는 선택한 목적지에 SMS를 보내는 것입니다. 대부분 하나 이상. 선택 잘 작동하지만 메서드를 전자 메일을 보내려면 항상 NullPointerException 표시하고 주 오류를 찾을 수 없습니다. emerNames는 문자열의 간단한 배열이며, emerNumbers도 마찬가지입니다! 내 마음 속에 보낼 텍스트는 문제가 아니지만 for 루프의 배열로 보내는 작업 일 수 있습니다!안드로이드 SMS 하나 이상의 destinationAdress 던졌습니다 NullPointerException

제안 사항?

 AlertDialog.Builder settingMessage = new AlertDialog.Builder(c); 

    settingMessage.setTitle("SOS- Empfänger wählen"); 
    settingMessage.setMultiChoiceItems(emerNames, checkItem, new DialogInterface.OnMultiChoiceClickListener() { 

     @Override 
     public void onClick(DialogInterface dialog, int which, boolean isChecked) 
     { 

      if (isChecked == true) 
      { 

       Log.i("AlertChoice", "SelectedItem: "+emerNames[which]); 
       ischecked[which] = true; 
       //emerNumbers[which]=emerNames[which]; 

      } 

      else 
      { 
       ischecked[which]=false; 
       //emerNumbers[which]= ""; 
       Log.i("AlertChoice", "Deseclected Item "+emerNames[which]); 
      } 

     } 
    }); 

    settingMessage.setNeutralButton("SOS senden", new DialogInterface.OnClickListener() { 

     @Override 
     public void onClick(DialogInterface dialog, int which) 
     { 

      for (int i = 0; i<ischecked.length;i++) 
      { 
       if (ischecked[i]== true) 
       { 
        Log.i("Selection", "SelectedItems:"+ emerNumbers[i]); 
        String text; 
        text = "HILFE, ich befinde mich in einer Notlage\n" 
          +"Meine persönlichen Daten:\n" 
          +"Vorname: "+empersData[0]+"\n" 
          +"Zuname: "+empersData[1]+"\n" 
          +"Alter: "+empersData[2]+"\n" 
          +"Blutgruppe: "+empersData[3]+empersData[4]+"\n"; 
          /*+"Versicherungsnr: "+empersData[5]+"\n" 
          +"Geschlecht: "+empersData[6]+"\n";*/ 
        SmsManager sms = SmsManager.getDefault(); 
        Log.i("nr","Telefonnr 1: "+ emerNumbers[i]); 
        Log.i("text",text); 
        sms.sendTextMessage(emerNumbers[i], null, text, null, null); 
        //Toast.makeText(this, "SOS versendet", Toast.LENGTH_LONG).show(); 
         Log.i("onClickTest", "Überprüfung Index: "+ischecked[i]); 

메도 "sms.sendTextMessage"는 NullPointerException이 발생합니다!

+0

수 당신은이 예외와 관련된 logcat을 올리시겠습니까? 건배 – dumbfingers

+0

난 그냥 문제를 직접 고쳤어 !! 텍스트 메시지의 charcters의 길이 !! 나는 "SmsMangager Methode"sendMultipartTextMessage "를 사용하여 텍스트를 분할했다. -이 Methode는 textMessage 그것을 sendable하게 만든다 !! –

+0

다음에 상세한 답변을 게시하고 유사한 질문을 한 다른 사람들을 돕기 위해 직접 수락하십시오. – dumbfingers

답변

1

좋아, 이제 막 문제를 해결했습니다. 문제는 메시지 텍스트입니다. 메시지의 한도는 160 자 범위로 설정되기 때문입니다. 그래서, 나는 "SMSManger"및 메도 "sendMultipartTextMessage를 사용하여 코드를 조정! 그것이 작동되도록하는 추가 된 소스 코드를 아래 :

      SmsManager sms = SmsManager.getDefault(); 
        // Aufteilung des SMS Textes da mehr als 160 character --> sonst zu groß 
        //Splits the text in parts | divide Message (text)--> The Text to split 
        ArrayList<String> parts =sms.divideMessage(text); 

        int numParts = parts.size(); 

        ArrayList<PendingIntent> sentIntents = new ArrayList<PendingIntent>(); 
        ArrayList<PendingIntent> deliveryIntents = new ArrayList<PendingIntent>(); 

        for (int j = 0; j < numParts; j++) 
        { 
        sentIntents.add(PendingIntent.getBroadcast(c, 0, new Intent(), 0)); 
        deliveryIntents.add(PendingIntent.getBroadcast(c, 0, new Intent(), 0)); 
        } 
        sms.sendMultipartTextMessage(emerNumbers[i], null, parts, sentIntents, deliveryIntents); 

을 어쨌든, 덕분에 나를 도와!

관련 문제