如何在android中访问最近收到的短信号码

时间:2013-03-12 06:11:41

标签: android android-intent

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

我尝试了这段代码,如何获取最近收到的短信发件人信息?

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.
      }
}

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

2 个答案:

答案 0 :(得分:1)

一步一步地遵循这个例子:

SMS Messaging in Android

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

接收短信
  

无论如何都要获取邮件发件人编号而不进行扩展   广播接收器?无论如何要从消息日志中访问?

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


  

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

答案这一行:

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

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

答案 1 :(得分: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];