トーストはSMSアプリに表示されません

私は問題がありますが、大きな問題ではありませんが、私は自分のコードにsendMultipartTextMessageを実装しているので、 "SMS Sent"のトーストや他のトーストは表示されません。 SMSが正常に送信されたかどうかはわからない。私は何をすべきか?コードは次のとおりです:

private void sendSMS(String phoneNo, String message, boolean split)
    {      
        String SENT = "SMS_SENT";
        String DELIVERED = "SMS_DELIVERED";

        PendingIntent sentPI = PendingIntent.getBroadcast(this, 0,
            new Intent(SENT), 0);

        PendingIntent deliveredPI = PendingIntent.getBroadcast(this, 0,
            new Intent(DELIVERED), 0);

        SmsManager sms = SmsManager.getDefault();
        if (!split) {
            Log.d("SMSTest", "Sending single message: " + message);
        } else {
            Log.d("SMSTest", "Sending '" + message + "' in multiple parts.");
            ArrayList parts = sms.divideMessage(message);
            Log.d("SMSTest", parts.size() + " parts:");
            for (String string : parts) {
                Log.d("SMSTest", string);
            }    
    ArrayList sentList = new ArrayList();
                    sentList.add(sentPI);
                    ArrayList deliveredList = new ArrayList();
                    deliveredList.add(deliveredPI);
                    sms.sendMultipartTextMessage(phoneNo, null, parts, sentList,
                            deliveredList);

                registerReceiver(new BroadcastReceiver(){
                    @Override
                    public void onReceive(Context arg0, Intent arg1) {
                        switch (getResultCode())
                        {
                            case Activity.RESULT_OK:
                                Toast.makeText(getBaseContext(), "SMS sent", 
                                        Toast.LENGTH_SHORT).show();
                                break;
                            case SmsManager.RESULT_ERROR_GENERIC_FAILURE:
                                Toast.makeText(getBaseContext(), "Generic failure", 
                                        Toast.LENGTH_SHORT).show();
                                break;
                            case SmsManager.RESULT_ERROR_NO_SERVICE:
                                Toast.makeText(getBaseContext(), "No service", 
                                        Toast.LENGTH_SHORT).show();
                                break;
                            case SmsManager.RESULT_ERROR_NULL_PDU:
                                Toast.makeText(getBaseContext(), "Null PDU", 
                                        Toast.LENGTH_SHORT).show();
                                break;
                            case SmsManager.RESULT_ERROR_RADIO_OFF:
                                Toast.makeText(getBaseContext(), "Radio off", 
                                        Toast.LENGTH_SHORT).show();
                                break;
                        }
                    }
                }, new IntentFilter(SENT));

                registerReceiver(new BroadcastReceiver(){
                    @Override
                    public void onReceive(Context arg0, Intent arg1) {
                        switch (getResultCode())
                        {
                            case Activity.RESULT_OK:
                                Toast.makeText(getBaseContext(), "SMS delivered", 
                                        Toast.LENGTH_SHORT).show();
                                break;
                            case Activity.RESULT_CANCELED:
                                Toast.makeText(getBaseContext(), "SMS not delivered", 
                                        Toast.LENGTH_SHORT).show();
                                break;                      
                        }
                    }
                }, new IntentFilter(DELIVERED));   
                }
            }
        }
1
スイッチにデフォルトを設定し、いずれかの条件が真であるかどうかをチェックします。
追加された 著者 Yashwanth Kumar,
ちょうどコードを編集し、全体のSMSメソッドが投稿されます。
追加された 著者 kev,
LG-p350は私のデバイスです。 if(!split)は、マルチパートメッセージを送信しているかどうかを確認します。まあ、エミュレータからは、単に "単一のメッセージを送る:nieklm"とトーストする必要はありません。
追加された 著者 kev,
もし私が "!"それはnullpointererrorへのエラーで終わります。どうすればいいですか?
追加された 著者 kev,
追加された 著者 Vladimir,
if(!split)節を除いて正しいと思われます。 split false なら、何も送っていません。 btw、どのデバイスをテストしていますか?
追加された 著者 Vladimir,
あなたが提供したコードは単一のメッセージを送信しません。それはデバッグログにのみ印刷されます
追加された 著者 Vladimir,

1 答え

デフォルトの大文字小文字の区別なしにスイッチを実装するべきではありません1つを作成し、 getResultCode()の値を表示します。これにより、行動をさらに詳しく調べるのに役立ちます。

サンプル:

switch (getResultCode()) {
    case Activity.RESULT_OK:
        Toast.makeText(getBaseContext(), "SMS delivered", Toast.LENGTH_SHORT).show();
        break;
    case Activity.RESULT_CANCELED:
        Toast.makeText(getBaseContext(), "SMS not delivered", Toast.LENGTH_SHORT).show();
        break;
    default:
        Toast.makeText(getBaseContext(), "Default... " + getResultCode(), Toast.LENGTH_SHORT).show();
}
0
追加された
このデフォルトをどうすればいいですか?
追加された 著者 kev,