2

こんにちは、私の主な問題は、選択した宛先アドレスに SMS を送信することです。ほとんどの場合、1 つ以上です。選択は正常に機能していますが、SMS を送信するメソッドには常に NullPointerException が表示され、主なエラーを見つけることができません。emerNames は文字列の単純な配列であり、emerNumbers も同様です! 私の頭の中で送信するテキストは問題ではありませんが、おそらく for ループ内の配列を使用した送信操作です!

助言がありますか?

        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 をスローします。

4

1 に答える 1

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);

とにかく、助けてくれてありがとう!!

于 2012-10-01T09:21:02.140 に答える