0

我正在尝试创建一个应用程序,我只想在其中获取最近收到的短信的发件人信息(电话号码,日期),并且我想向该特定号码发送回复消息。

我试过这个代码,我怎样才能得到最近收到的短信的发件人信息?

Bundle bundle = intent.getExtras();
SmsMessage[] msgs = null;
String string = "";
String phone = "";

if (bundle != null)
{
    //---receive the SMS message--
    Object[] pdus = (Object[]) bundle.get("pdus");
    msgs = new SmsMessage[pdus.length];            
    for (int i=0; i<msgs.length; i++){
        msgs[i] = SmsMessage.createFromPdu((byte[])pdus[i]); 
        phone = msgs[i].getOriginatingAddress();  // Here you can get the phone number of SMS sender.
        string += msgs[i].getMessageBody().toString(); // Here you can get the message body.
      }
}

有没有办法在不扩展广播接收器的情况下获取消息发送者号码?无论如何要从消息日志中访问?

4

2 回答 2

1

以下代码将为您提供收到的短信的号码。

    Uri uri = Uri.parse("content://sms/inbox");
    Cursor cursor = getContentResolver().query(uri, null, null, null, null);
    int i =0;
    String[] number = new String[cursor.getCount()];  
    while (cursor.moveToNext()) {
        number[i] = (String) cursor.getString(cursor.getColumnIndex("address")); 
        i++;                         
        }
    }

要获取最近收到的短信数量,您可以访问

   String mostRecentNumber = number[0];
于 2013-03-13T09:59:35.947 回答
1

逐步按照此示例进行操作:

Android中的短信

包含接收和回复短信,还包含完整代码!接收短信是通过Broadcast Receiver


无论如何在不扩展广播接收器的情况下获取消息发送者号码?无论如何从消息日志中访问?

您可以通过访问现有的短信数据库,Content Providers但消息在广播接收器之后到达那里,并且当在 android 数据库中写入新消息时,它会更进一步地“观看”。


如何获取最近收到的短信的发件人信息?

这一行的答案:

phone = msgs[i].getOriginatingAddress();  // Here you can get the phone number of SMS sender.

该号码是模拟器上的给定号码或您的网络提供商提供的发件人“号码”,也可以是文本。

于 2013-03-12T08:09:59.453 回答