嗨 :) 我在我的短信接收器类中,它处理传入的短信。它通常工作正常,但我实际上试图阻止一些发件人。我将被阻止的号码放在名为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,它显示传入的短信。我已经评论了它,但它仍然显示味精,并且不显示我试图显示的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();
}
}
}
}