嗨:)我在我的短信接收器类中,处理插入的短信。它通常工作正常,但我实际上试图阻止一些发件人。我将阻止的数字放在名为 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 命名变量,但它仍然显示唯一一个显示传入短信的Toast。我评论过它,但它仍然显示了msg,并没有显示我想要显示的 numm 命名变量。 其次,Log.d没有显示任何内容。它真的不起作用。
请告诉我两件事:
谢谢!
.......
这是我的完整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();
}
}
}
}