栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 移动开发 > Android

Android开发获取短信的内容并截取短信

Android 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Android开发获取短信的内容并截取短信

1、首先我们要写一个广播接收器,当我们的手机收到短信时,系统会自动发送一个广播,我们只需要接收到这条广播就可以了

2、在广播里面,我们重写的onReceive()方法,通过里面的Intent写到的Bundle就可以拿到短信的内容,

3、清单文件里面我们必须要添加权限,否则无法接收到。

4、为了防止我们的广播接收不到,我们自己写的广播接收器的权限必须要大,以防万一,我设置了1000。

下面上代码,里面的注释也比较详细..

 
 
   //接收短信
   
   
     
     

  

     
     

  
  

     
   
 

写一个类,继承BroadcastReceiver

Android--获取短信的内容,截取短信
 package com.example.fanlei.cutnotedemo;
 import android.content.BroadcastReceiver;
 import android.content.Context;
 import android.content.Intent;
 import android.os.Bundle;
 import android.telephony.SmsMessage;
 import android.widget.Toast;
 import java.text.SimpleDateFormat;
 import java.util.Date;
 
 public class NoteReceiver extends BroadcastReceiver {
   private static final String SMS_RECEIVED_ACTION = "android.provider.Telephony.SMS_RECEIVED";
   @Override
   public void onReceive(Context context, Intent intent) {
     String action = intent.getAction();
     //判断广播消息
     if (action.equals(SMS_RECEIVED_ACTION)){
Bundle bundle = intent.getExtras();
//如果不为空
if (bundle != null){
  //将pdus里面的内容转化成Object[]数组
  Object pdusData[] = (Object[]) bundle.get("pdus");
  //解析短信
  SmsMessage[] msg = new SmsMessage[pdusData.length];
  for (int i = ;i < msg.length;i++){
    byte pdus[] = (byte[]) pdusData[i];
    msg[i] = SmsMessage.createFromPdu(pdus);
  }
  StringBuffer content = new StringBuffer();//获取短信内容
  StringBuffer phoneNumber = new StringBuffer();//获取地址
  StringBuffer receiveData = new StringBuffer();//获取时间
  //分析短信具体参数
  for (SmsMessage temp : msg){
    content.append(temp.getMessageBody());
    phoneNumber.append(temp.getOriginatingAddress());
    receiveData.append(new SimpleDateFormat("yyyy-MM-dd hh:mm:ss.SSS")
 .format(new Date(temp.getTimestampMillis())));
  }
  
  Toast.makeText(context,phoneNumber.toString()+content+receiveData, Toast.LENGTH_LONG).show();//短信内容
}
     }
   }
 }

ps:android获取短信所有内容

public class GetMessageInfo { 
  List list; 
  Context context; 
  MessageInfo messageInfo; 
  public GetMessageInfo(Context context) { 
    list = new ArrayList(); 
    this.context = context; 
  } 
  // --------------------------------收到的短息信息---------------------------------- 
  public List getSmsInfos() { 
    final String SMS_URI_INBOX = "content://sms/inbox";// 收信箱 
    try { 
      ContentResolver cr = context.getContentResolver(); 
      String[] projection = new String[] { "_id", "address", "person","body", "date", "type" }; 
      Uri uri = Uri.parse(SMS_URI_INBOX); 
      Cursor cursor = cr.query(uri, projection, null, null, "date desc"); 
      while (cursor.moveTonext()) { 
 messageInfo = new MessageInfo(); 
 // -----------------------信息---------------- 
 int nameColumn = cursor.getColumnIndex("person");// 联系人姓名列表序号 
 int phoneNumberColumn = cursor.getColumnIndex("address");// 手机号 
 int smsbodyColumn = cursor.getColumnIndex("body");// 短信内容 
 int dateColumn = cursor.getColumnIndex("date");// 日期 
 int typeColumn = cursor.getColumnIndex("type");// 收发类型 1表示接受 2表示发送 
 String nameId = cursor.getString(nameColumn); 
 String phoneNumber = cursor.getString(phoneNumberColumn); 
 String smsbody = cursor.getString(smsbodyColumn); 
 Date d = new Date(Long.parseLong(cursor.getString(dateColumn))); 
 SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd " + "n" + "hh:mm:ss"); 
 String date = dateFormat.format(d); 
 // --------------------------匹配联系人名字-------------------------- 
 Uri personUri = Uri.withAppendedPath(ContactsContract.PhoneLookup.CONTENT_FILTER_URI,phoneNumber); 
 Cursor localCursor = cr.query(personUri, new String[] {PhoneLookup.DISPLAY_NAME, PhoneLookup.PHOTO_ID,PhoneLookup._ID }, null, null, null); 
 System.out.println(localCursor.getCount()); 
 System.out.println("之前----"+localCursor); 
 if (localCursor.getCount()!=0) { 
   localCursor.moveToFirst(); 
   System.out.println("之后----"+localCursor); 
   String name = localCursor.getString(localCursor.getColumnIndex(PhoneLookup.DISPLAY_NAME)); 
   long photoid = localCursor.getLong(localCursor.getColumnIndex(PhoneLookup.PHOTO_ID)); 
   long contactid = localCursor.getLong(localCursor.getColumnIndex(PhoneLookup._ID)); 
   messageInfo.setName(name); 
   // 如果photoid 大于0 表示联系人有头像 ,如果没有给此人设置头像则给他一个默认的 
   if (photoid > 0) { 
    Uri uri1 = ContentUris.withAppendedId(ContactsContract.Contacts.CONTENT_URI,contactid); 
     InputStream input = ContactsContract.Contacts.openContactPhotoInputStream(cr, uri1); 
     messageInfo.setContactPhoto(BitmapFactory.decodeStream(input)); 
   } else { 
     messageInfo.setContactPhoto(BitmapFactory.decodeResource(context.getResources(),R.drawable.ic_launcher)); 
   } 
 }else{ 
     messageInfo.setName(phoneNumber); 
     messageInfo.setContactPhoto(BitmapFactory.decodeResource(context.getResources(), R.drawable.ic_launcher)); 
   } 
 localCursor.close(); 
 messageInfo.setSmsContent(smsbody); 
 messageInfo.setSmsDate(date); 
 list.add(messageInfo); 
      } 
    } catch (SQLiteException e) { 
      e.printStackTrace(); 
    } 
    return list; 
  } 
} 

以上内容是小编给大家分享的Android开发获取短信的内容并截取短信,希望大家喜欢。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/163755.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号