0

こんにちは:)私は着信SMSを処理するSMSレシーバークラスにいます。通常は問題なく動作しますが、実際に一部の送信者をブロックしようとしています。ブロックされた番号をblackListという名前のArrayListに配置しました。以下のコード セグメントは、私が最後に何をしているかを示しています。

    String sender = "";
    boolean allowed = true;
        for(int i=0;i<msgs.length;i++)
        {
            msgs[i] = SmsMessage.createFromPdu((byte[])pdus[i]);

            sender = msgs[i].getOriginatingAddress();

            if(BlockedNumber.blackList.contains(sender))
            {
                allowed = false;
                break;
            }

            str = "SMS From: " + msgs[i].getOriginatingAddress();
            str += ":";
            str += msgs[i].getMessageBody().toString();
            str += "\n";
        }

        String numm = BlockedNumber.blackList.get(2);
        Toast.makeText(context, numm, Toast.LENGTH_LONG).show();
        Log.d("CHEKK", numm);

        if(allowed == true){

            //.makeText(context, str, Toast.LENGTH_LONG).show();
        }

しかし、期待どおりには機能しません。Toast でnummという名前の変数を表示しようとしているので、着信 SMS を表示するトーストが 1 つだけ表示されます。コメントしましたが、まだメッセージが表示され、表示しようとしているnummという名前の変数が表示されません。次に、Log.d には何も表示されません。本当に機能していません。

親切に2つのことを教えてください:

  1. 何か間違っている場合は、親切に教えてください。または私が行方不明ですか?
  2. 指定した番号からの着信 SMS をブロックする方法は正しいですか?

ありがとう!

.......

これが私の完全な SMS Receiver クラスです。

package com.example.pingpongsmsremote;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.telephony.SmsMessage;
import android.util.Log;
import android.widget.Toast;

public class SMSreceiver extends BroadcastReceiver {

@Override
public void onReceive(Context context, Intent intent) {

    BlockedNumber.blackList.add("Zeeshan");
    Bundle bundle = intent.getExtras();
    String str = "";
    SmsMessage[] msgs = null;

    if(bundle != null)
    {
    Object[] pdus = (Object[]) bundle.get("pdus");
    msgs = new SmsMessage[pdus.length];
    String sender = "";
    boolean allowed = true;
        for(int i=0;i<msgs.length;i++)
        {
            msgs[i] = SmsMessage.createFromPdu((byte[])pdus[i]);

            sender = msgs[i].getOriginatingAddress();

            if(BlockedNumber.blackList.contains(sender))
            {
                allowed = false;
                break;
            }

            str = "SMS From: " + msgs[i].getOriginatingAddress();
            str += ":";
            str += msgs[i].getMessageBody().toString();
            str += "\n";
        }

        String numm = BlockedNumber.blackList.get(0);
        Toast.makeText(context, numm, Toast.LENGTH_LONG).show();
        Log.d("CHEKK", numm);

        if(allowed == true){

            //.makeText(context, str, Toast.LENGTH_LONG).show();
        }

    }

}

}
4

0 に答える 0