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

在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

相关推荐

  • 扬州阿里云代理商:阿里云手机域名解析

    阿里云手机域名解析是指使用阿里云提供的域名解析服务,在手机设备上解析域名并将其转化为对应的IP地址。作为扬州的阿里云代理商,我们可以帮助用户配置和管理阿里云的域名解析服务。 通过阿里云手机域名解析,用户可以实现以下功能: 将域名解析到具体的IP地址:用户可以将自己的域名解析到指定的IP地址,实现域名与网站或服务器的绑定。 设置多个解析记录:用户可以根据需要配…

    2024年2月5日
    12000
  • 阿里云服务器搭建网站

    要在阿里云服务器上搭建网站,你可以按照以下步骤进行操作: 购买阿里云服务器:登录阿里云官网,在云产品中选择合适的云服务器,并进行购买。 选择操作系统:在购买服务器时,需要选择操作系统。如果你对操作系统没有特殊要求,可以选择一款流行的操作系统,如CentOS。 连接到服务器:购买后,使用SSH工具(如PuTTY)连接到你的阿里云服务器。 安装Web服务器:根据…

    2023年10月1日
    13100
  • 重庆阿里云代理商:android底部菜单栏

    Android 底部菜单栏是 Android 应用程序中常用的一种导航模式,通常包含几个标签项,提供了快速切换应用程序中不同的功能模块的方式。实现底部菜单栏的方法有很多种,以下是其中一种常用的方式: 在 XML 文件中定义底部菜单栏的布局,通常使用 LinearLayout 和 Button 组件。 <LinearLayout android:id=&…

    2023年12月29日
    11900
  • 南宁阿里云代理商:阿里云误删除数据恢复

    首先,如果您在阿里云上遇到数据误删除的情况,可以尝试以下步骤来恢复数据: 首先,立即停止对被删除数据的任何写操作,以免数据被覆盖。 登录阿里云管理控制台,打开云服务器的控制台页面。 在左侧导航栏中,选择您的云服务器所在地域和可用区。 在云服务器控制台页面,选择“存储与快照”>“快照”选项。 在快照页面,选择与您的云服务器对应的云盘。 在云盘操作栏中,选…

    2024年2月11日
    11700
  • 莱州阿里云企业邮箱代理商:阿里邮箱写邮件怎么写

    莱州阿里云企业邮箱代理商:阿里邮箱的优势与好用之处 在现代社会,电子邮件已经成为人们日常工作和生活中不可或缺的重要工具。而作为一款专注于企业级用户的邮箱服务,阿里云企业邮箱在功能和安全性上都有着明显优势,让用户能够更加高效地进行邮件沟通和管理。 简洁易用的界面 阿里云企业邮箱的界面设计简洁明了,操作流畅,用户可以快速找到需要的功能。无论是撰写邮件、查看已发的…

    2024年2月26日
    9200

发表回复

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

联系我们

4000-747-360

在线咨询: QQ交谈

邮件:ixuntao@qq.com

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

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