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

在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

相关推荐

  • 阿里云新建数据中心有什么用

    阿里为什么要自己建IDC 阿里数据量太庞大了,建立自己的数据中心,由自己的专业团队操控,当然要靠谱稳当许多。而且这个也算是发展新业务啦!阿里无孔不入咯 发展云计算 为什么要建设数据中心 云计算的处理对象就是大数据。如果没有大数据,就没必要发展云计算了。建立数据中心可以可以使云计算有了用武之地,这是个人理解,下面的链接是介绍云计算数据中心的,看看对你是否有帮助…

    2023年8月28日
    4300
  • 南阳阿里云代理商:安卓监听网络连接

    安卓监听网络连接可以使用ConnectivityManager类来实现。下面是一个简单的示例代码: 首先,在AndroidManifest.xml文件中添加以下权限: <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/> 然后,在你的…

    2024年2月3日
    3800
  • 澳门阿里云代理商:阿里云安全组设置

    澳门阿里云代理商可以帮助您进行阿里云安全组的设置。阿里云安全组是一种虚拟防火墙,用于控制云服务器实例的出入流量。通过安全组的设置,可以限制哪些IP地址可以访问您的云服务器,提高网络安全性。 澳门阿里云代理商可以根据您的需求,帮助您进行以下安全组设置: 创建安全组:根据您的网络架构和需求,代理商可以帮助您创建一个新的安全组。 管理安全组规则:代理商可以根据您的…

    2023年12月17日
    3600
  • 平顶山阿里云企业邮箱代理商:阿里云邮件推送能赚钱吗

    阿里云企业邮箱代理商:阿里云邮件推送能赚钱吗 阿里云企业邮箱作为一款领先的企业级邮件服务产品,拥有强大的功能和稳定可靠的性能,受到了众多企业的青睐。作为阿里云企业邮箱的代理商,我们经过长期的使用和实践,对阿里云邮件推送的盈利潜力有了更深入的了解。 1. 阿里云企业邮箱的优势 阿里云企业邮箱具备以下几个明显的优势: 安全稳定:阿里云作为国内顶尖的云计算服务提供…

    2024年2月16日
    3700
  • 台州阿里云代理商:android购物车动画

    台州阿里云代理商可以提供Android购物车动画的服务。购物车动画可以增加用户购物体验,使应用界面更加生动和有趣。我们的专业团队可以为您设计和开发出符合您需求的购物车动画效果,包括购物车图标的动态变化、添加商品时的动画效果、商品数量增减时的过渡效果等。我们将根据您的要求进行定制开发,确保动画效果与您的应用风格相符。 台州阿里云代理商可以为您提供定制的Andr…

    2024年1月3日
    3800

发表回复

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

联系我们

4000-747-360

在线咨询: QQ交谈

邮件:ixuntao@qq.com

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

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