5

マルチパート メッセージの送受信方法に関する複数のスレッドを読みました。次のコードを実装しましたが、動作します!

      PendingIntent sentPI = PendingIntent.getBroadcast(this, 0, new Intent(SENT), 0);
      PendingIntent deliveredPI = PendingIntent.getBroadcast(this, 0, new Intent(DELIVERED), 0);
        //---when the SMS has been sent---
        registerReceiver(SMSBroadcastReceiver1, new IntentFilter(SENT));
        //---when the SMS has been delivered---
        registerReceiver(SMSBroadcastReceiver2, new IntentFilter(DELIVERED));    


    SmsManager smsManager = SmsManager.getDefault();
    ArrayList<String> parts = smsManager.divideMessage(smsToSend);

    ArrayList<PendingIntent> sentList = new ArrayList<PendingIntent>();
    ArrayList<PendingIntent> deliveredList = new ArrayList<PendingIntent>();
    for (int i = 0; i < parts.size(); i++) {
        sentList.add(sentPI);
        deliveredList.add(deliveredPI);
    }


    //smsManager.sendTextMessage(phoneNumber, null, smsToSend, sentPI, deliveredPI);
    smsManager.sendMultipartTextMessage(phoneNumber, null, parts, sentList, deliveredList);

SMSBroadcastReceiver2とSMSBroadcastReceiver1が1つ登録されています。

私が心配していることは次のとおりです。

andに登録されている単一のPendingIntentsentPi とがあります。deliveredPiSMSBroadcastReceiver1SMSBroadcastReceiver2

そして、メッセージの長さに応じて、それらをArrayListに複数回入れます。

これは良いことですか?または、メッセージの各部分に対して異なるインテントとレシーバーを用意する必要があります。

また、コードでレシーバーが起動するのはいつですか? メッセージの長さに関係なく、メッセージが送信されたときに1回、受信されたときに1回だけ起動することに気付きました(その瞬間にトーストメッセージを表示するようにコード化しました)。前編の配信時か最後か…?

4

0 に答える 0