Android:如何从收到的短信中获取电话号码?

发布于 2025-01-08 00:32:55 字数 245 浏览 2 评论 0原文

我有一个广播接收器 SMSApp,它的 onReceive 会从意图中读取bundleExtras。在这里,我如何从bundleExtras中读取电话号码?

if(intent.getAction().equals(SMS_RECEIVED))
{
  Bundle bundleExtras = intent.getExtras();
  if (bundleExtras != null) 
    {

    }
}

I have a broadcast receiver SMSApp which onReceive reads bundleExtras from intent. Here, How can I read phone number from bundleExtras?

if(intent.getAction().equals(SMS_RECEIVED))
{
  Bundle bundleExtras = intent.getExtras();
  if (bundleExtras != null) 
    {

    }
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

陌路终见情 2025-01-15 00:32:55
Bundle bundle = intent.getExtras();
            Object[] pdus = (Object[]) bundle.get("pdus");
            final SmsMessage[] messages = new SmsMessage[pdus.length];
            for (int i = 0; i < pdus.length; i++) {
                messages[i] = SmsMessage.createFromPdu((byte[]) pdus[i]);
            }

现在,messages[0].getOriginatingAddress() 是地址,messages[0].getMessageBody() 是消息正文。

Bundle bundle = intent.getExtras();
            Object[] pdus = (Object[]) bundle.get("pdus");
            final SmsMessage[] messages = new SmsMessage[pdus.length];
            for (int i = 0; i < pdus.length; i++) {
                messages[i] = SmsMessage.createFromPdu((byte[]) pdus[i]);
            }

Now, messages[0].getOriginatingAddress() is the address and messages[0].getMessageBody() is the message body.

菊凝晚露 2025-01-15 00:32:55

教程位于 http://ukitech.blogspot.com/2014/11/android -sms-app.html

输出:

SmsReceiver.processReceivedSms:来自+1650815xxxx的短信

SmsReceiver.processReceivedSms:短信正文测试4

/**
* 由 uki 于 2014 年 11 月 22 日创建。
*/

公共类 SmsReceiver 扩展了 BroadcastReceiver {

@Override
      public void onReceive(Context context, Intent intent) {
            final String tag = TAG + ".onReceive";
            Bundle bundle = intent.getExtras();
            if (bundle == null) {
                  Log.w(tag, "BroadcastReceiver failed, no intent data to process.");
                  return;
            }
            if (intent.getAction().equals(SMS_RECEIVED)) {
                  Log.d(tag, "SMS_RECEIVED");

                  String smsOriginatingAddress, smsDisplayMessage;

                  // You have to CHOOSE which code snippet to use NEW (KitKat+), or legacy
                  // Please comment out the for{} you don't want to use.

                  // API level 19 (KitKat 4.4) getMessagesFromIntent
                  for (SmsMessage message : Telephony.Sms.Intents.
                                            getMessagesFromIntent(intent)) {
                        Log.d(tag, "KitKat or newer");
                        if (message == null) {
                              Log.e(tag, "SMS message is null -- ABORT");
                              break;
                        }
                        smsOriginatingAddress = message.getDisplayOriginatingAddress();
                        //see getMessageBody();
                        smsDisplayMessage = message.getDisplayMessageBody();
                        processReceivedSms(smsOriginatingAddress, smsDisplayMessage);
                  }

                  // Processing SMS messages the OLD way, before KitKat,
                  // this WILL work on KitKat or newer Android
                  // PDU is a “protocol data unit”, which is the industry
                  // format for an SMS message
                  Object[] data = (Object[]) bundle.get("pdus");
                  for (Object pdu : data) {
                        Log.d(tag, "legacy SMS implementation (before KitKat)");
                        SmsMessage message = SmsMessage.createFromPdu((byte[]) pdu);
                        if (message == null) {
                              Log.e(tag, "SMS message is null -- ABORT");
                              break;
                        }
                        smsOriginatingAddress = message.getDisplayOriginatingAddress();
                        // see getMessageBody();
                        smsDisplayMessage = message.getDisplayMessageBody();
                        processReceivedSms(smsOriginatingAddress, smsDisplayMessage);
                  }
            } // onReceive method

Tutorial at http://ukitech.blogspot.com/2014/11/android-sms-app.html

OUTPUT:

SmsReceiver.processReceivedSms﹕ SMS from +1650815xxxx

SmsReceiver.processReceivedSms﹕ SMS body Test 4

/**
* Created by uki on 11/22/14.
*/

public class SmsReceiver extends BroadcastReceiver {

@Override
      public void onReceive(Context context, Intent intent) {
            final String tag = TAG + ".onReceive";
            Bundle bundle = intent.getExtras();
            if (bundle == null) {
                  Log.w(tag, "BroadcastReceiver failed, no intent data to process.");
                  return;
            }
            if (intent.getAction().equals(SMS_RECEIVED)) {
                  Log.d(tag, "SMS_RECEIVED");

                  String smsOriginatingAddress, smsDisplayMessage;

                  // You have to CHOOSE which code snippet to use NEW (KitKat+), or legacy
                  // Please comment out the for{} you don't want to use.

                  // API level 19 (KitKat 4.4) getMessagesFromIntent
                  for (SmsMessage message : Telephony.Sms.Intents.
                                            getMessagesFromIntent(intent)) {
                        Log.d(tag, "KitKat or newer");
                        if (message == null) {
                              Log.e(tag, "SMS message is null -- ABORT");
                              break;
                        }
                        smsOriginatingAddress = message.getDisplayOriginatingAddress();
                        //see getMessageBody();
                        smsDisplayMessage = message.getDisplayMessageBody();
                        processReceivedSms(smsOriginatingAddress, smsDisplayMessage);
                  }

                  // Processing SMS messages the OLD way, before KitKat,
                  // this WILL work on KitKat or newer Android
                  // PDU is a “protocol data unit”, which is the industry
                  // format for an SMS message
                  Object[] data = (Object[]) bundle.get("pdus");
                  for (Object pdu : data) {
                        Log.d(tag, "legacy SMS implementation (before KitKat)");
                        SmsMessage message = SmsMessage.createFromPdu((byte[]) pdu);
                        if (message == null) {
                              Log.e(tag, "SMS message is null -- ABORT");
                              break;
                        }
                        smsOriginatingAddress = message.getDisplayOriginatingAddress();
                        // see getMessageBody();
                        smsDisplayMessage = message.getDisplayMessageBody();
                        processReceivedSms(smsOriginatingAddress, smsDisplayMessage);
                  }
            } // onReceive method
左秋 2025-01-15 00:32:55

这是详细“如何发送和接收短信”的链接,您应该检查它,它完整且充满示例:

http://mobiforge.com/developing/story/sms-messaging-android

也使用这个 链接,您可以执行以下操作:

if (bundle != null) {
    SmsMessage[] messages = Telephony.Sms.Intents.getMessagesFromIntent(intent);
    for (int i = 0; i < messages.length; i++) {
        SmsMessage message = messages[i];
        buf.append("Received SMS from  ");
        buf.append(message.getDisplayOriginatingAddress());
        buf.append(" - ");
        buf.append(message.getDisplayMessageBody());
    }
}

This is a link to a detailed "how to send and receive sms messages", you should check it, it is complete and full with examples:

http://mobiforge.com/developing/story/sms-messaging-android

also using this link, you can do:

if (bundle != null) {
    SmsMessage[] messages = Telephony.Sms.Intents.getMessagesFromIntent(intent);
    for (int i = 0; i < messages.length; i++) {
        SmsMessage message = messages[i];
        buf.append("Received SMS from  ");
        buf.append(message.getDisplayOriginatingAddress());
        buf.append(" - ");
        buf.append(message.getDisplayMessageBody());
    }
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文