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

在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

相关推荐

  • 苏州阿里云代理商:apache listen 域名

    苏州阿里云代理商apache listen域名的意思是在阿里云服务器上使用Apache服务时,设置Apache监听某个特定的域名进行网站访问。这样可以将网站的访问指向特定的域名,实现更加精准的网站访问管理和控制。设置Apache监听域名可以通过在Apache配置文件中进行相关设置来实现。 苏州阿里云代理商可以通过修改Apache配置文件来设置监听域名。以下是…

    2024年3月1日
    66800
  • 台湾阿里云代理商:ASP留言管理网页代码

    以下是一个简单的ASP留言管理网页的代码示例: <% ' 定义数据库连接信息 Dim connStr connStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:pathtodatabase.mdb;" ' 创建ADO连接对象 Dim conn Set co…

    2024年1月10日
    70900
  • 阿里云企业邮箱代理商:如何利用阿里云企业邮箱的OA集成能力,实现邮件与审批流程的打通?

    阿里云企业邮箱代理商:如何利用OA集成能力实现邮件与审批流程打通 一、阿里云企业邮箱的OA集成核心优势 作为国内领先的企业级邮箱服务,阿里云企业邮箱提供了强大的OA系统集成能力,其核心优势包括: 原生API支持:提供标准化的开放接口,支持与企业内部OA系统深度对接 双向同步机制:邮件状态与审批流程实时同步,确保信息一致性 安全加密传输:采用SSL/TLS加密…

    2025年10月25日
    42500
  • 福州阿里云代理商:阿里支https证书怎么申请

    要申请阿里云支持的https证书,可以按照以下步骤操作: 登录阿里云控制台,进入SSL证书管理界面。 点击”立即购买”按钮,选择需要的证书类型。 根据要求填写申请信息,包括域名、服务器类型等。 完成支付,确认订单。 等待CA机构审核您的域名信息,通常需要几分钟至数天的时间。 审核通过后,您将收到CA机构发放的证书文件,包括公钥证书、私…

    2023年12月19日
    70200
  • 阿里云物联网平台传输速度

    请问阿里云4兆独立带宽上传速率能达到多大 建议你用虚拟主机,是共享1000M带宽,比几M的服务器要快很多。推荐你用:虚拟主机-普及版(1G,送50M SQL数据库,支持HTML/ASP/NET/PHP/MYSQL/MSSQL),网站备案免费:120元/年。 可以找咱们,现在在线。 阿里云2M带宽,下行速度多大,搭建免流服务器够用吗?要不够用多大可以? 这个没…

    2023年8月26日
    75700

发表回复

登录后才能评论

联系我们

4000-747-360

在线咨询: QQ交谈

邮件:ixuntao@qq.com

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

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