数据库获取 Android 短信

简介:
读取短信需要的权限
<uses-permission android:name="android.permission.READ_SMS"/>
读取数据库短信方法
   public static List<Map<StringString>> getSmsCode() {
        String lastTime = "1534228493681"// 时间
        Log.i("SMSUtil""开始获取短信");
        Cursor cursor = null;
        // 添加异常捕捉
        try {
            //第一种, 查询所有短信
            cursor = App.mContext.getContentResolver().query(
                    Uri.parse("content://sms"),
                    new String[]{"_id""address""body""date""person""type"},
                    nullnull"date desc");
            //第二种, 通过查询条件, 例如:date > lastTime, 过滤数据
            /*cursor = App.mContext.getContentResolver().query(
                        Uri.parse("content://sms"),
                        new String[]{"_id", "address", "body", "date", "person", "type"},
                        "date > ?", new String[]{lastTime}, "date desc");*/


            if (cursor != null) {
                List<Map<StringString>> smsList = new ArrayList<>();
                while (cursor.moveToNext()) {
                    String body = cursor.getString(cursor.getColumnIndex("body"));// 在这里获取短信信息
                    String person = cursor.getString(cursor.getColumnIndex("person")); // 陌生人为null
                    String address = cursor.getString(cursor.getColumnIndex("address"));
                    String _id = cursor.getString(cursor.getColumnIndex("_id"));
                    String date = cursor.getString(cursor.getColumnIndex("date"));
                    String type = cursor.getString(cursor.getColumnIndex("type"));
                    HashMap<StringString> smsMap = new HashMap<>();
                    smsMap.put("body", body);
                    smsMap.put("person", person);
                    smsMap.put("address", address);
                    smsMap.put("_id", _id);
                    smsMap.put("date", date);
                    smsList.add(smsMap);

                    Log.i("test_sms""body = " + body + "  person = " + person + "  address = " + address
                            + "  date = " + date + "  type = " + type);
                }
                // 返回所有的短信
                return smsList;
            }
        } catch (Exception e) {
            e.printStackTrace();
            Log.i("test_sms""e = " + e.getMessage());
        } finally {
            if (cursor != null) {
                cursor.close();
            }
        }
        return null;
    }
URI 主要有:
content://sms/             所有短信 (本示例用的所有)
content://sms/inbox        收件箱
content://sms/sent         已发送
content://sms/draft        草稿
content://sms/outbox       发件箱
content://sms/failed       发送失败
content://sms/queued       待发送列表
SMS 主要结构:
_id => 短消息序号 如 100  
thread_id => 对话的序号 如 100  
address => 发件人地址,手机号. 如 + 8613811810000  
person => 发件人,返回一个数字就是联系人列表里的序号,陌生人为 null  
date => 日期  long 型。如 1256539465022  
protocol => 协议 0 SMS_RPOTO, 1 MMS_PROTO   
read => 是否阅读 0 未读, 1 已读   
status => 状态 -1 接收,0 complete, 64 pending, 128 failed   
type => 类型 1 是接收到的,2 是已发出       
   (ALL    = 0; 所有
    INBOX  = 1; 收件箱
    SENT   = 2; 已发送
    DRAFT  = 3; 草稿
    OUTBOX = 4; 发件箱
    FAILED = 5; 失败
    QUEUED = 6;)待发送

body => 短消息内容   
service_center => 短信服务中心号码编号。如 + 8613800755500  


原文发布时间为:2018-08-15

本文来自云栖社区合作伙伴“Android开发中文站”,了解相关信息可以关注“Android开发中文站”。

相关文章
|
8月前
|
存储 缓存 数据库
Android之SQLite数据库使用详解
Android之SQLite数据库使用详解
|
8月前
|
数据库 Android开发 数据安全/隐私保护
在 Android Studio 中结合使用 SQLite 数据库实现简单的注册和登录功能
在 Android Studio 中结合使用 SQLite 数据库实现简单的注册和登录功能
311 2
|
8月前
|
存储 数据库 Android开发
在 Android Studio 中结合使用 SQLite 数据库实现简单的注册和登录功能
在 Android Studio 中结合使用 SQLite 数据库实现简单的注册和登录功能
254 0
|
8月前
|
SQL 存储 数据库
48. 【Android教程】数据库:SQLite 的使用
48. 【Android教程】数据库:SQLite 的使用
153 1
|
9月前
|
数据库 Android开发
Android数据库框架-GreenDao入门,2024年最新flutter 页面跳转动画
Android数据库框架-GreenDao入门,2024年最新flutter 页面跳转动画
Android数据库框架-GreenDao入门,2024年最新flutter 页面跳转动画
|
9月前
|
网络协议 关系型数据库 MySQL
如何实现无公网ip远程访问本地安卓Termux部署的MySQL数据库【内网穿透】
如何实现无公网ip远程访问本地安卓Termux部署的MySQL数据库【内网穿透】
|
9月前
|
存储 SQL 数据库
【Android 从入门到出门】第六章:使用Room数据库并测试
【Android 从入门到出门】第六章:使用Room数据库并测试
128 4
|
9月前
|
网络协议 关系型数据库 MySQL
安卓手机termux上安装MariaDB数据库并实现公网环境下的远程连接
安卓手机termux上安装MariaDB数据库并实现公网环境下的远程连接
312 0
|
9月前
|
数据库 Android开发 数据库管理
【Android】使用android studio查看内置数据库信息
【Android】使用android studio查看内置数据库信息
683 0
|
9月前
|
存储 数据库连接 数据库
Android数据存储:解释SQLite数据库在Android中的使用。
Android数据存储:解释SQLite数据库在Android中的使用。
107 0

热门文章

最新文章

  • 1
    Cellebrite UFED 4PC 7.71 (Windows) - Android 和 iOS 移动设备取证软件
    26
  • 2
    【03】仿站技术之python技术,看完学会再也不用去购买收费工具了-修改整体页面做好安卓下载发给客户-并且开始提交网站公安备案-作为APP下载落地页文娱产品一定要备案-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
    34
  • 3
    Android历史版本与APK文件结构
    121
  • 4
    【02】仿站技术之python技术,看完学会再也不用去购买收费工具了-本次找了小影-感觉页面很好看-本次是爬取vue需要用到Puppeteer库用node.js扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
    29
  • 5
    【01】仿站技术之python技术,看完学会再也不用去购买收费工具了-用python扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-客户的麻将软件需要下载落地页并且要做搜索引擎推广-本文用python语言快速开发爬取落地页下载-优雅草卓伊凡
    23
  • 6
    APP-国内主流安卓商店-应用市场-鸿蒙商店上架之必备前提·全国公安安全信息评估报告如何申请-需要安全评估报告的资料是哪些-优雅草卓伊凡全程操作
    57
  • 7
    【09】flutter首页进行了完善-采用android studio 进行真机调试开发-增加了直播间列表和短视频人物列表-增加了用户中心-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
    37
  • 8
    当flutter react native 等混开框架-并且用vscode-idea等编译器无法打包apk,打包安卓不成功怎么办-直接用android studio如何打包安卓apk -重要-优雅草卓伊凡
    73
  • 9
    【08】flutter完成屏幕适配-重建Android,增加GetX路由,屏幕适配,基础导航栏-多版本SDK以及gradle造成的关于fvm的使用(flutter version manage)-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
    120
  • 10
    Android经典面试题之Kotlin中Lambda表达式和匿名函数的区别
    29