こんにちは:)私は着信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つのことを教えてください:
- 何か間違っている場合は、親切に教えてください。または私が行方不明ですか?
- 指定した番号からの着信 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();
}
}
}
}