我正在尝试创建一个应用程序,其中我只想获取最近收到的短信的发件人信息(电话号码,日期),并且我想向该特定号码发送回复消息。
我尝试了这段代码,如何获取最近收到的短信发件人信息?
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.
}
}
无论如何都可以在不扩展广播接收器的情况下获取消息发送方号码?无论如何从消息日志中进行访问?
答案 0 :(得分:1)
一步一步地遵循这个例子:
包含接收和回复短信,还包括完整代码!通过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];