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

在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

相关推荐

  • 阿里云国际站:api25的adt版本

    阿里云国际站上的 API 25 的 ADT 版本相关信息可以在官方文档中找到。以下是关于 API 25 的 ADT 版本的一些常见问题和答案: API 25 的 ADT 版本是什么? API 25 通常指 Android 7.1(Nougat),而 ADT 是 Android Development Tools 的简称,通常指的是 Android SDK 和…

    2024年7月11日
    16700
  • 简述阿里云机器学习方法

    阿里云机器学习方法是指阿里云提供的一系列基于云平台的机器学习解决方案。阿里云机器学习方法包括以下几个方面: 机器学习平台:阿里云提供了一套完整的机器学习平台,用户可以在该平台上进行模型训练、调优和部署等操作。该平台支持多种机器学习算法和模型,包括深度学习、强化学习、传统机器学习等。 数据处理:阿里云还提供了多种数据处理工具和服务,以帮助用户进行数据预处理、特…

    2023年8月4日
    17100
  • 阿里云轻量应用服务器流量

    阿里云轻量应用服务器的流量费用是按照流入流量和流出流量分别计费的。流入流量是指从公网通过云外网设备传输到用户云服务器的流量,流出流量是指从用户云服务器通过公网设备传输到互联网的流量。 按照阿里云的计费标准,轻量应用服务器的流入流量是免费的,不会产生流量费用。而流出流量根据不同地域和流量使用情况进行计费,具体费用可以通过阿里云官网的计费页查看。 同时,阿里云还…

    2023年11月3日
    17100
  • 武汉阿里云代理商:阿里云短信促活

    阿里云短信促活是指武汉地区的阿里云代理商利用阿里云短信平台为客户提供促销活动相关的短信服务。阿里云短信平台是阿里云旗下的一项短信发送服务,可以帮助企业向用户发送各类短信通知、验证码、推广信息等。 武汉的阿里云代理商可以借助阿里云短信平台为本地的企业客户提供短信促活服务。具体而言,代理商可以通过分析客户的促销活动需求,制定短信发送计划,并利用阿里云短信平台进行…

    2023年12月23日
    20800
  • 阿里云计算未来发展

    云计算未来几年的发展怎么样? 在互联网+的大趋势下,云计算已经成为推动各个产业升级转型的核动力,它也将成为未来互联网企业的制胜法宝。而从目前的发展趋势来看,还远没有哪一家能够独吞整个市场,阿里云、腾讯云虽具有一定的优势,但京东云、网易云、视频云基于自身优势从垂直领域切入,未来完全有可能与阿里云腾讯云匹敌;华为云、联想云、电信云、联通云等企业基于自身的渠道资源…

    2023年8月29日
    15700

发表回复

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

联系我们

4000-747-360

在线咨询: QQ交谈

邮件:ixuntao@qq.com

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

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