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

在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

相关推荐

  • 淄博阿里云代理商:api计费程序设计

    淄博阿里云代理商的API计费程序设计可以按照以下步骤进行: 确定计费方式:根据阿里云的计费规则,确定API的计费方式,例如按调用次数、按带宽、按流量等。这将影响后续的计费逻辑设计。 设计接口调用计费逻辑:根据所选计费方式,设计API调用计费逻辑。例如,如果按调用次数计费,可以在每次API调用时增加计数器,并将计数器的值与价格进行乘积计算得到消费金额。 设置计…

    2024年2月3日
    14700
  • 阿里云的运维工资高吗现在

    在阿里云上运维一个比较小网站一年多少钱 几百吧,好像现在还有活动,前3个月免费 运维工程师工资待遇大概多少? 应届毕业生实习3000-5000, 一般普通的5000-8000,水平高了和经验多的话,1w多 数据中心运维工资高吗 看你是做什么?如果只是一般的值班人员,工资并不高。如果你去做管理人员,工作还算可以。如果你是甲方的正式员工,这工资更好一些。 做CD…

    2023年8月28日
    13000
  • 阿里云企业邮箱的技术对不同网络协议的支持情况?

    阿里云企业邮箱对网络协议的支持及其优势 阿里云企业邮箱是一款集成多种通信协议和安全特性的企业级邮件服务,广泛支持POP3、IMAP和SMTP等主流协议。通过对这些协议的全面支持,阿里云企业邮箱确保了跨平台和多客户端的邮件访问体验,适用于各类企业需求。本文将详细介绍阿里云企业邮箱在网络协议支持方面的表现,并结合其代理商服务优势,分析其市场价值。 1. 支持的网…

    2024年10月15日
    7600
  • 安丘阿里云企业邮箱代理商:阿里云流量卡

    安丘阿里云企业邮箱代理商:阿里云流量卡优势 全球领先的企业邮箱服务 阿里云企业邮箱是一款全球领先的企业邮箱服务,提供强大稳定的邮件收发功能,为企业用户提供高效的沟通和协作平台。 安全可靠的邮箱服务 阿里云企业邮箱采用全球顶级的安全技术,保障用户的邮箱数据安全,防范各类网络攻击和垃圾邮件。 强大的管理和协作工具 阿里云企业邮箱提供丰富的管理和协作工具,包括日程…

    2024年2月19日
    11700
  • 梧州阿里云企业邮箱代理商:阿里邮箱怎么设置签名内容格式

    阿里云企业邮箱代理商:阿里邮箱签名内容格式设置 阿里云企业邮箱是一种专为企业用户量身定制的电子邮件解决方案。作为阿里云企业邮箱的代理商之一,我们将为您介绍如何设置阿里邮箱的签名内容格式,并同时分享一些阿里云企业邮箱的优势。 阿里云企业邮箱的优势 安全性:阿里云企业邮箱采用先进的安全技术和防护措施,保障您的企业邮件不受垃圾邮件、病毒和恶意软件的侵害。 可靠性:…

    2024年2月11日
    9900

发表回复

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

联系我们

4000-747-360

在线咨询: QQ交谈

邮件:ixuntao@qq.com

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

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