读取手机第一条短信内容和监听手机新收到的短信

首先添加权限
<!-- 发送短信-->
<uses-permission android :name= "android.permission.SEND_SMS" />
<!-- 阅读消息 -->
<uses-permission android :name= "android.permission.READ_SMS" />
<!-- 写入消息 -->
<uses-permission android :name= "android.permission.WRITE_SMS" />
<!-- 接收消息 -->
<uses-permission android :name= "android.permission.RECEIVE_SMS" />

这段代码是获取手机短信内的第一条信息
private Uri SMS_INBOX = Uri.parse("content://sms/");
public void getSmsFromPhone() {
ContentResolver cr = getContentResolver();
String[] projection = new String[] { "body" };//"_id", "address", "person",, "date", "type
String where = " address = '10010' " ;

Cursor cur = cr.query(SMS_INBOX, projection, null, null, "date desc");
if (null == cur)
return;
if(cur.moveToNext()) {
// int number = cur.getInt(cur.getColumnIndex("address"));//手机号
// String name = cur.getString(cur.getColumnIndex("person"));//联系人姓名列表
String body = cur.getString(cur.getColumnIndex("body"));
System.out.println(" **************"+body);
//这里我是要获取自己短信服务号码中的验证码~~
Pattern pattern = Pattern.compile(" [a-zA-Z0-9]{10}");
Matcher matcher = pattern.matcher(body);
if (matcher.find()) {
String res = matcher.group().substring(1, 11);
System.out.println("======》"+res);
}
}
}

监听手机新来短信
首先注册一个广播
public class SmsReciver extends BroadcastReceiver
在AndroidManifest.xml注册
<receiver android :name= ".SmsReciver" >
<intent-filter android :priority= "999" >
<action android :name= "android.provider.Telephony.SMS_RECEIVED" />
</intent-filter>
</receiver>
广播类里

public class SmsReciver extends BroadcastReceiver {

@Override
public void onReceive(Context context, Intent intent) {
System.out.println("监听到来短信");
Bundle bundle = intent.getExtras();
SmsMessage msg = null;
if (null != bundle) {
Object[] smsObj = (Object[]) bundle.get("pdus");
for (Object object : smsObj) {
msg = SmsMessage.createFromPdu((byte[]) object);
Date date = new Date(msg.getTimestampMillis());//时间
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String receiveTime = format.format(date);
System.out.println("number:" + msg.getOriginatingAddress()
+ " body:" + msg.getDisplayMessageBody() + " time:"
+ msg.getTimestampMillis());

//在这里写自己的逻辑
if (msg.getOriginatingAddress().equals("10086")) {
//TODO
}
}
}
}
}
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值