重庆阿里云代理商:安卓编程获取短信内容

在Android编程中,获取短信内容可以采用ContentObserver记录系统短信数据库的变化以达到获取新短信内容的目的。以下是一个简单的例子:

首先,需要在AndroidManifest.xml中声明READ_SMS权限:

<uses-permission android:name="android.permission.READ_SMS"/>

然后,在Activity中创建一个内部类,继扭ContentObserver类,并在onChange方法中处理短信内容获取:

class SMSObserver extends ContentObserver {
    public SMSObserver(Handler handler) {
        super(handler);
    }

    @Override
    public void onChange(boolean selfChange) {
        super.onChange(selfChange);
        Uri uri = Uri.parse("content://sms/inbox");
        Cursor c = getContentResolver().query(uri, null, null ,null,null);
        if(c != null) {
            if(c.moveToNext()){
                String body = c.getString(c.getColumnIndex("body"));   //获取短信内容
                // 在这里对body进行处理
            }
            c.close();
        }
    }
}

然后在onCreate方法中注册这个观察者:

SMSObserver smsObserver = new SMSObserver(new Handler());
getContentResolver().registerContentObserver(Uri.parse("content://sms"), true, smsObserver);

以上就是基本的处理过程。需要注意的是从Android 6.0开始,READ_SMS权限被定义为危险权限,可能需要在运行时进行权限请求。

在Android上获取短信内容需要用到SMS系统提供的ContentProvider,获取短信的功能在权限方面也有严格的限制,仅限于默认的短信应用。

以下是一个简单的示例代码,用于获取收件箱中所有短信的内容:

public String getSmsFromPhone() {
    Uri SMS_ALL = Uri.parse("content://sms/");
    StringBuilder smsBuilder = new StringBuilder();

    Cursor cur = getContentResolver().query(SMS_ALL, null, null, null, null);
    // 遍历游标
    while (cur.moveToNext()) {
    // 遍历短信数据库的列,获取短信内容
    for (int i = 0; i < cur.getColumnCount(); i++) {
            smsBuilder.append(cur.getColumnName(i)).append("=").append(cur.getString(i)).append("n");
        }
        smsBuilder.append("================================");
    }

    return smsBuilder.toString();
}

注意:从Android 6.0开始,读取短信的权限被纳入了危险权限,需要进行运行时权限检查。从Android 4.4开始,只有默认的短信应用才能够读取短信。如果你需要读取短信,在AndroidManifest.xml添加以下权限:

重庆阿里云代理商:安卓编程获取短信内容
<uses-permission android:name="android.permission.READ_SMS"/>
<uses-permission android:name="android.permission.RECEIVE_SMS"/>

然后在代码中进行运行时权限检查:

if (ContextCompat.checkSelfPermission(this, Manifest.permission.READ_SMS) != PackageManager.PERMISSION_GRANTED) {
    ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.READ_SMS}, 1);
}

发布者:luotuoemo,转转请注明出处:https://www.jintuiyun.com/161108.html

(0)
luotuoemo的头像luotuoemo
上一篇 2024年3月14日 00:24
下一篇 2024年3月14日 00:25

相关推荐

  • 阿里云企业邮箱:为什么邮件系统要集成区块链存证?

    阿里云企业邮箱:为什么邮件系统要集成区块链存证? 引言 在互联网信息高速发展的今天,企业通信已全面迈入电子化、智能化时代。电子邮件作为企业日常内部沟通及对外交流的核心工具,其安全性、可靠性和合规性成为企业管理者和IT负责人关注的重点。面对邮件被篡改、伪造、抵赖等信息安全风险,传统邮件系统在数据保护与合规取证上逐渐显露不足。近年来,区块链技术以其不可篡改、可追…

    2025年6月13日
    69800
  • 阿里云企业邮箱:为什么开放API需设置速率限制?

    阿里云企业邮箱:为什么开放API需设置速率限制? 在当今的企业级通信中,阿里云企业邮箱凭借其稳定性、高安全性和强大的功能,已经成为了众多企业的首选邮箱服务之一。随着技术的不断发展,API接口逐渐成为企业与阿里云企业邮箱互动的重要桥梁。而为了保障系统的稳定性与性能,API速率限制成为了一项必不可少的设置。那么,为什么阿里云企业邮箱需要对API设置速率限制呢?在…

    2025年4月28日
    96600
  • 苏州阿里云代理商:asp网站编码转换

    苏州阿里云代理商提供ASP网站编码转换服务。ASP(Active Server Pages)是一种服务器端脚本语言,用于动态生成网页。在ASP网站开发中,经常会遇到网页编码不一致的问题。苏州阿里云代理商可以帮助您将ASP网站的编码进行转换,确保网页显示正常。 ASP网站编码转换涉及将网页从一种编码格式转换成另一种编码格式,常见的编码格式包括UTF-8、GBK…

    2024年2月1日
    74300
  • 阿里云服务器做代理

    阿里云服务器可以用来搭建代理服务器,具体步骤如下: 购买阿里云服务器:在阿里云官网注册账号并购买一台云服务器实例,选择适合自己需求的配置和操作系统。 配置防火墙:在阿里云服务器控制台打开相应的安全组,确保所需端口(代理服务器一般使用HTTP端口80或HTTPS端口443)是开放的。 安装代理服务器软件:可以选择常用的代理软件如Squid、Nginx或V2Ra…

    2023年10月26日
    77800
  • 阿里云在全国数据中心有哪些部门

    阿里云数据中心在哪些地方 阿里碧宽液的数据巧指中心主要都在南方浙江等地,杭州的数据中心最密集。虽然阿里在北京上海也有分公司,但拥有的都是本地公司的小数据中心悔物。 小鸟云数据中心在哪些地方? 目前小鸟云的目前的话是有5个数据中心,分别是辽宁、北京、江苏、香港、广东,接下来要开放的好像是内蒙古,这些的话去他们官网就能查看得到的。 一个广告公司有哪些部门组成? …

    2023年8月30日
    69600

发表回复

登录后才能评论

联系我们

4000-747-360

在线咨询: QQ交谈

邮件:ixuntao@qq.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信
购买阿里云服务器请访问:https://www.4526.cn/