我的编程空间,编程开发者的网络收藏夹
学习永远不晚

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

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

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

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

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

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

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

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


 <?xml version="." encoding="utf-"?>
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
   package="com.example.fanlei.cutnotedemo" >
   //接收短信
   <uses-permission android:name="android.permission.RECEIVE_SMS"/>
   <application
     android:allowBackup="true"
     android:icon="@drawable/ic_launcher"
     android:label="@string/app_name"
     android:theme="@style/AppTheme" >
     <!-- action:name = 的名称是固定的 -->
     <receiver android:name=".NoteReceiver">
       <intent-filter android:priority="">
         <action android:name="android.provider.Telephony.SMS_RECEIVED"/>
       </intent-filter>
     </receiver>
     <activity
       android:name=".MainActivity"
       android:label="@string/app_name" >
       <intent-filter>
         <action android:name="android.intent.action.MAIN" />
         <category android:name="android.intent.category.LAUNCHER" />
       </intent-filter>
     </activity>
   </application>
 </manifest>

写一个类,继承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<MessageInfo> list; 
  Context context; 
  MessageInfo messageInfo; 
  public GetMessageInfo(Context context) { 
    list = new ArrayList<MessageInfo>(); 
    this.context = context; 
  } 
  // --------------------------------收到的短息信息---------------------------------- 
  public List<MessageInfo> 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开发获取短信的内容并截取短信,希望大家喜欢。

您可能感兴趣的文章:Android Bitmap的截取及状态栏的隐藏和显示功能Android实现bitmap指定区域滑动截取功能android 手机截取长屏实例代码解析Android截取手机屏幕两种实现方案Android实现拍照截取和相册图片截取Android个人中心的头像上传,图片编码及截取实例Android 仿QQ头像自定义截取功能Android中截取当前屏幕图片的实例代码Android截取视频帧并转化为Bitmap示例Android截取指定View为图片的实现方法


免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

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

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

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

1、首先我们要写一个广播接收器,当我们的手机收到短信时,系统会自动发送一个广播,我们只需要接收到这条广播就可以了 2、在广播里面,我们重写的onReceive()方法,通过里面的Intent写到的Bundle就可以拿到短信的内容, 3、清单
2022-06-06

Android如何利用ContentProvider读取短信内容

今天就跟大家聊聊有关Android如何利用ContentProvider读取短信内容,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。首先,我们来看下运行效果运行效果如下:展示短信内容的
2023-06-25

android ContentResolver如何获取手机电话号码和短信内容

小编给大家分享一下android ContentResolver如何获取手机电话号码和短信内容,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!通过ContentResolver 获取到手机的联系人跟手机短信信息并显示出来,具
2023-05-30

Android实现获取短信验证码并自动填充

这篇文章主要为大家详细介绍了Android如何实现获取短信验证码并自动填充的功能,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起了解一下
2023-05-16

Android获取短信验证码的实现方法

先给大家展示下效果图,如果感觉不错,请参考实现思路详解Android开发中关于短息验证码的设计层出不穷,越来越多的应用为了更好的提高软件的安全性,开始使用通过服务器向用户发送验证码的方式,来保护用户个人信息的安全性。无论是用户注册时的信息验
2022-06-06

Android获取和读取短信验证码的实现方法

现如今,验证码在Android的客户端还是非常普遍的.通过手机账号和验证码直接去注册应用账户的信息.很多应用都以这种方式来完成注册.简单的介绍一下吧. Android获取短信验证码还是比较简单的,通过Mob官网提供的ShareSDK,调
2022-06-06

关于Android发送短信获取送达报告的问题(推荐)

最近公司开发一个项目,要求app能够发送短信并获取送达报告。这本不是一个什么难题,实现这一功能的代码一搜一大把,那么这么简单的一个问题,为什么我要在这里提出来呢?那是因为我在写代码的时候掉入了一个坑,而且这很可能发生在很多和我一样粗心的朋友
2022-06-06

获取Android手机中所有短信的实现代码

Java核心代码:public String getSmsInPhone() { final String SMS_URI_ALL = "content://sms/"; final String SMS_URI_INBOX = "c
2022-06-06

Android封装实现短信验证码的获取倒计时

这篇文章主要介绍了Android封装实现短信验证码的获取倒计时,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习吧
2023-03-12

Android开发之获取短信验证码后按钮背景变化并且出现倒计时

目前越来越多的app在注册或是进行对应操作时,要求获取短信验证码,在点击了获取短信验证码的按钮后,就是出现倒计时,比如倒计时120S,在倒计时期间内,按钮背景变化并且出现倒计时,当倒计时结束后,如果你没有获取到验证码,可以再次点击。 代码如
2022-06-06

Android封装怎么实现短信验证码的获取倒计时

今天小编给大家分享一下Android封装怎么实现短信验证码的获取倒计时的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。如图所示
2023-07-05

在Android 中使用ContentObserver怎么获取短信验证码并实现自动填充

在Android 中使用ContentObserver怎么获取短信验证码并实现自动填充?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。步骤:首先我使用了Conte
2023-05-31

Android实现获取未接来电和未读短信数量的方法

本文实例展示了Android实现获取未接来电和未读短信数量的方法,在Android程序开发中非常常见,是非常实用的功能,现分享给大家供大家参考。具体如下: 一、未读短信 首先注册Observer,当有新短信或彩信来的时候会调用 onCh
2022-06-06

Android 7.0开发获取存储设备信息的方法

本文实例讲述了 Android 7.0开发获取存储设备信息的方法。分享给大家供大家参考,具体如下:Android 7.0开发相较之前有不少改进,具体可参考前面的文章Android7.0版本影响开发的改进分析,这里简单总结一下Android
2023-05-30

Android开发之在程序中时时获取logcat日志信息的方法(附demo源码下载)

本文实例讲述了Android开发之在程序中时时获取logcat日志信息的方法。分享给大家供大家参考,具体如下: 今天分享一个在软件开发中很实用的例子,也是这几天在通宵加班中我使用的一个小例子, 在程序中监听Log信息。 为什么说它实用?原因
2022-06-06

编程热搜

  • Android:VolumeShaper
    VolumeShaper(支持版本改一下,minsdkversion:26,android8.0(api26)进一步学习对声音的编辑,可以让音频的声音有变化的播放 VolumeShaper.Configuration的三个参数 durati
    Android:VolumeShaper
  • Android崩溃异常捕获方法
    开发中最让人头疼的是应用突然爆炸,然后跳回到桌面。而且我们常常不知道这种状况会何时出现,在应用调试阶段还好,还可以通过调试工具的日志查看错误出现在哪里。但平时使用的时候给你闹崩溃,那你就欲哭无泪了。 那么今天主要讲一下如何去捕捉系统出现的U
    Android崩溃异常捕获方法
  • android开发教程之获取power_profile.xml文件的方法(android运行时能耗值)
    系统的设置–>电池–>使用情况中,统计的能耗的使用情况也是以power_profile.xml的value作为基础参数的1、我的手机中power_profile.xml的内容: HTC t328w代码如下:
    android开发教程之获取power_profile.xml文件的方法(android运行时能耗值)
  • Android SQLite数据库基本操作方法
    程序的最主要的功能在于对数据进行操作,通过对数据进行操作来实现某个功能。而数据库就是很重要的一个方面的,Android中内置了小巧轻便,功能却很强的一个数据库–SQLite数据库。那么就来看一下在Android程序中怎么去操作SQLite数
    Android SQLite数据库基本操作方法
  • ubuntu21.04怎么创建桌面快捷图标?ubuntu软件放到桌面的技巧
    工作的时候为了方便直接打开编辑文件,一些常用的软件或者文件我们会放在桌面,但是在ubuntu20.04下直接直接拖拽文件到桌面根本没有效果,在进入桌面后发现软件列表中的软件只能收藏到面板,无法复制到桌面使用,不知道为什么会这样,似乎并不是很
    ubuntu21.04怎么创建桌面快捷图标?ubuntu软件放到桌面的技巧
  • android获取当前手机号示例程序
    代码如下: public String getLocalNumber() { TelephonyManager tManager =
    android获取当前手机号示例程序
  • Android音视频开发(三)TextureView
    简介 TextureView与SurfaceView类似,可用于显示视频或OpenGL场景。 与SurfaceView的区别 SurfaceView不能使用变换和缩放等操作,不能叠加(Overlay)两个SurfaceView。 Textu
    Android音视频开发(三)TextureView
  • android获取屏幕高度和宽度的实现方法
    本文实例讲述了android获取屏幕高度和宽度的实现方法。分享给大家供大家参考。具体分析如下: 我们需要获取Android手机或Pad的屏幕的物理尺寸,以便于界面的设计或是其他功能的实现。下面就介绍讲一讲如何获取屏幕的物理尺寸 下面的代码即
    android获取屏幕高度和宽度的实现方法
  • Android自定义popupwindow实例代码
    先来看看效果图:一、布局
  • Android第一次实验
    一、实验原理 1.1实验目标 编程实现用户名与密码的存储与调用。 1.2实验要求 设计用户登录界面、登录成功界面、用户注册界面,用户注册时,将其用户名、密码保存到SharedPreference中,登录时输入用户名、密码,读取SharedP
    Android第一次实验

目录