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

在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

相关推荐

  • 阿里云企业邮箱:为什么阿里云企业邮箱的搜索速度提升?

    阿里云企业邮箱:为什么搜索速度大幅提升? 一、阿里云企业邮箱搜索速度提升的背景 随着企业数据量的快速增长,邮箱作为日常沟通和信息存储的核心工具,用户对搜索效率的需求日益凸显。传统的邮箱搜索功能往往面临响应慢、结果不精准等问题,尤其是当用户需要快速查找历史邮件或附件时,效率瓶颈直接影响工作体验。阿里云企业邮箱针对这一痛点,通过技术升级和架构优化,显著提升了搜索…

    2025年7月22日
    22200
  • 泰州阿里云代理商:阿里云 即时视频通讯

    泰州阿里云代理商提供阿里云即时视频通讯服务。阿里云即时视频通讯是一种提供实时音视频通信能力的云产品,可用于各种应用场景,如在线教育、远程医疗、社交娱乐等。阿里云即时视频通讯基于阿里云强大的网络和计算基础设施,提供高清、低延迟的音视频通信体验。 作为阿里云代理商,泰州阿里云代理商可以为客户提供阿里云即时视频通讯的部署、配置、优化等服务,帮助客户快速搭建稳定可靠…

    2024年2月10日
    36400
  • 用户对阿里云企业邮箱的邮件分类整理功能便捷性评价?

    用户对阿里云企业邮箱邮件分类整理功能的便捷性评价 在现代商业环境中,企业邮箱不仅仅是用于发送和接收邮件的工具,更是企业沟通、协作及信息管理的重要平台。阿里云企业邮箱作为市场上知名的企业邮局服务,其内置的邮件分类整理功能成为了广大用户眼中提升工作效率的重要利器。本文将对阿里云企业邮箱的邮件分类整理功能进行深入分析,并结合阿里云企业邮箱及其代理商的优势,探讨其便…

    2024年10月17日
    29400
  • 阿里云在哪些区域应用

    如何使用阿里云访问外部网站?区域选择怎么选? 如果是访问海外网站,那就用美国机房。国内的网站就用杭州或北京机房。建议用阿里云的代金券,能大大节省成本。可以发给你。 阿里云最大的服务中心规模有多大? 阿里云最大的服务中心规模是真的大的哦 阿里云地图有哪些功能? 输入网站:http://ditu.aliyun.com/,阿里云地图。页面左侧有公交和驾车的选择栏,…

    2023年8月28日
    36200
  • 苏州阿里云代理商:ado怎么执行sql语句获取数据库

    在苏州的阿里云代理商ADO中,您可以使用ADO.NET(ActiveX Data Objects .NET)技术来执行SQL语句获取数据库数据。ADO.NET是.NET框架中用于访问各种数据源(如数据库、XML等)的一套数据库访问技术。 以下是一个使用ADO.NET执行SQL语句获取数据库数据的示例代码: using System; using System…

    2024年3月5日
    35500

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们

4000-747-360

在线咨询: QQ交谈

邮件:ixuntao@qq.com

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

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