android以编程方式读取短信

时间:2015-08-19 15:14:03

标签: android sms broadcastreceiver

我尝试用broadcastReciver读取短信。我搜索并编写了这段代码:

public class IncomingSms extends BroadcastReceiver {

// Get the object of SmsManager
final SmsManager sms = SmsManager.getDefault();

public void onReceive(Context context, Intent intent) {

    // Retrieves a map of extended data from the intent.
    final Bundle bundle = intent.getExtras();

    try {
        if (bundle != null) {
            final Object[] pdusObj = (Object[]) bundle.get("pdus");

            for (int i = 0; i < pdusObj.length; i++) {

                SmsMessage currentMessage = SmsMessage.createFromPdu((byte[]) pdusObj[i]);
                String phoneNumber = currentMessage.getDisplayOriginatingAddress();

                String senderNum = phoneNumber;
                String message = currentMessage.getDisplayMessageBody();

                Log.i("SmsReceiver", "senderNum: "+ senderNum + "; message: " + message);

                int duration = Toast.LENGTH_LONG;
                Toast toast = Toast.makeText(context, "senderNum: "+ senderNum + ", message: " + message, duration);
                toast.show();
            } // end for loop
          } // bundle is null

    } catch (Exception e) {
        Log.e("SmsReceiver", "Exception smsReceiver" +e);
    }
}

在我的广播接收器中可以显示吐司中的所有收入消息,但我不需要它。我只需要混凝土短信。例如,我需要读取已收到用户+4423232的短信 我只需要阅读这些数字(用户)短信

我如何解决我的问题?

1 个答案:

答案 0 :(得分:0)

只需获得用户的ph。没有得到他的电影。没有以编程方式或要求他,然后使用if语句来查明消息是否来自所需的数字,然后做你想做的任何事情 就像雅加说的那样。如果您知道如何使用try语句,为什么不能使用if语句,会出现什么问题?