首页 > 编程知识 正文

监听手机收到短信并自动回复信息,手机自动收到信息怎么回事

时间:2023-05-05 10:54:40 阅读:286426 作者:2304

1、通过广播监听接收到短信

androidManifest.xml中权限配置:

//读取短信权限<uses-permission android:name="android.permission.READ_SMS"></uses-permission><uses-permission android:name="android.permission.RECEIVE_SMS"></uses-permission>//回复短信权限<uses-permission android:name="android.permission.SEND_SMS"/> 注册广播:

<receiver android:name=".receive.SmsReciver"> <intent-filter android:priority="999"> <action android:name="android.provider.Telephony.SMS_RECEIVED"/> </intent-filter></receiver> 广播中监听到接收短信:

public class SmsReciver extends BroadcastReceiver { String SENT_SMS_ACTION = "SENT_SMS_ACTION"; String DELIVERED_SMS_ACTION = "DELIVERED_SMS_ACTION"; private Context context; @Override public void onReceive(Context context, Intent intent) { 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()); Log.e("短信号码", "" + msg.getOriginatingAddress()); Log.e("短信内容", "" + msg.getDisplayMessageBody()); Log.e("短信时间", "" + msg.getTimestampMillis());// sendSMS("15655973115", "自动发送,勿回!"); } } } 2、通过查询短信数据库获取短信内容:

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 = '1066321332' AND date > " + (System.currentTimeMillis() - 10 * 60 * 1000); Cursor cur = cr.query(SMS_INBOX, projection, where, null, "date desc"); if (null == cur) return; if (cur.moveToNext()) { String number = cur.getString(cur.getColumnIndex("address"));//手机号 String name = cur.getString(cur.getColumnIndex("person"));//联系人姓名列表 String body = cur.getString(cur.getColumnIndex("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); } }} 3、发送短信:

/** * 调用发送短信 * @param phoneNumber,对方的号码 * @param message,发送短信内容分 */private void sendSMS(String phoneNumber, String message) { //create the sentIntent parameter Intent sentIntent = new Intent(SENT_SMS_ACTION); PendingIntent sentPI = PendingIntent.getBroadcast(context, 0, sentIntent, 0); // create the deilverIntent parameter Intent deliverIntent = new Intent(DELIVERED_SMS_ACTION); PendingIntent deliverPI = PendingIntent.getBroadcast(context, 0, deliverIntent, 0); SmsManager sms = SmsManager.getDefault(); if (message.length() > 70) { List<String> msgs = sms.divideMessage(message); for (String msg : msgs) { sms.sendTextMessage(phoneNumber, null, msg, sentPI, deliverPI); } } else { sms.sendTextMessage(phoneNumber, null, message, sentPI, deliverPI); } Log.e("activity成功","成功");}

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。