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

在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

相关推荐

  • 阿里云企业邮箱:怎样用阿里云企业邮箱管理子账号?

    阿里云企业邮箱:如何高效管理子账号? 2023年10月15日 一、阿里云企业邮箱的核心优势 阿里云企业邮箱作为国内领先的企业级邮件服务解决方案,其突出的管理功能和稳定性受到众多企业的青睐。以下是其核心优势: 权限分级管理:支持超级管理员创建多个子账号并分配不同权限层级。 安全防护体系:采用SSL加密传输,配备反垃圾邮件引擎和病毒查杀功能。 多端同步协作:PC…

    2025年7月21日
    13000
  • 沈阳阿里云代理商:access数据库查询生成表

    要在阿里云上查询和生成表可以遵循以下步骤: 连接数据库:使用access数据库连接工具(如ODBC连接)连接到阿里云上的access数据库。 编写SQL查询:使用SQL语句编写查询语句,例如: SELECT * FROM 表名; 执行查询:使用数据库连接工具执行查询语句,并获取查询结果。 生成表:根据查询结果,使用相关语言(如Java、Python)编写代码…

    2024年2月11日
    29700
  • 南京阿里巴巴云计算中心怎么样

    阿里云计算有限公司怎么样? 简介:软盟云科技是一家从事广告营销的互联网公司。够公司致力于云营销网站的设计与推广。目前公司旗下拥有Windcms网站内容管理系统、杠杆云营销网站、杠杆云营销系统、杠杆4S店、杠杆云管家等产品和服务。主要从事中小企业信息化领域的产品技术研发和渠道运营法定代表人:胡晓明成立时间:2008-04-08注册资本:100000万人民币工商…

    2023年8月29日
    27000
  • 阿里云企业邮箱与企业电商平台的集成对订单邮件处理的优化?

    引言 随着电子商务的迅猛发展,企业电商平台在处理订单信息时,往往需要面对大量的邮件沟通需求。这其中,订单确认、发货通知、客户售后等邮件处理成为了电商运营的核心部分。而阿里云企业邮箱凭借其高效、安全、稳定的特点,为企业电商平台在订单邮件处理上带来了显著优化,帮助企业提升运营效率和客户满意度。 阿里云企业邮箱的优势概述 阿里云企业邮箱作为国内领先的企业邮件解决方…

    2024年10月30日
    19800
  • 阿里云国际站代理商:阿里云公有云价格

    作为阿里云国际站的代理商,我们提供了阿里云公有云的详细价格信息。阿里云公有云的价格取决于多个因素,包括实例配置、地域、使用时长等。以下是一些常见的阿里云公有云服务的价格范例: Elastic Compute Service (ECS):ECS是阿里云提供的云服务器服务,根据实例配置不同,价格也有所不同。例如,一台t5.small实例在美国弗吉尼亚地区的价格约…

    2024年1月28日
    30200

发表回复

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

联系我们

4000-747-360

在线咨询: QQ交谈

邮件:ixuntao@qq.com

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

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