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

在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

相关推荐

  • 长春阿里云代理商:android 查看手机数据库

    要在Android设备上查看手机数据库,你可以按照以下步骤进行操作: 在Android设备上安装一个SQLite数据库查看器应用程序。其中一种常用的应用程序是”SQLite Database Browser”。 通过USB连接你的Android设备到电脑上,并打开设备的开发者选项。你可以在设备的设置中找到开发者选项,然后开启USB调试…

    2024年2月16日
    38300
  • 如何提高阿里云企业邮箱的邮件发送成功率和稳定性在复杂网络环境下?

    如何提高阿里云企业邮箱的邮件发送成功率和稳定性在复杂网络环境下 在当今全球化的商业环境中,企业对电子邮件的依赖日益增加,邮件的发送成功率和稳定性直接影响着沟通效率和业务运作。特别是在复杂网络环境下,提升阿里云企业邮箱的邮件发送成功率和稳定性成为了一个关键问题。本文将结合阿里云企业邮箱的特性以及阿里云企业邮箱代理商的优势,深入探讨如何在复杂网络环境下提高邮件的…

    2024年10月31日
    33800
  • 澳门阿里云代理商:阿里重启Dubbo后框架

    Dubbo是阿里巴巴开源的一款高性能的Java RPC框架,用于构建分布式服务架构。此消息指的是阿里云代理商在澳门地区推出的阿里云Dubbo服务的重启。 Dubbo是一种轻量级、高性能的微服务框架,可以实现服务之间的远程调用和协同工作。它具有强大的可扩展性和可配置性,可以根据业务需求进行灵活调整和配置。 澳门地区的阿里云代理商重启Dubbo框架意味着他们将提…

    2024年1月23日
    41400
  • 阿里云盘应用程序打不开了

    为什么应用程序在盘里打不开?点到没反应,应用也没有损坏,也没有不兼容? 本地硬盘?还是u盘?确定软件是可以直接执行?绿色版?如果都是还没有反应最大可能是杀毒软件屏蔽或者就是系统不兼容问题,都查一下吧,解除屏蔽或者更换系统。 N85应用程序打不开,怎么办? 格式化,如果不行 下载一个新一些的ROM刷一下。 应用程序打不开,系统盘双击也无法打开是为什么? 病毒现…

    2023年8月27日
    47400
  • 阿里云香港轻量服务器的防御怎么样

    阿里云香港轻量服务器提供了多层次的防御措施,以保护服务器和用户数据的安全。以下是阿里云香港轻量服务器的主要防御机制: 防火墙:阿里云提供了网络流量防火墙,可以设置规则来过滤和屏蔽恶意访问和攻击。 安全组:可以通过设置安全组规则进行网络访问控制,限制服务器的访问范围和通信规则。 入侵检测系统(IDS):阿里云内置的IDS可以实时监控服务器的入侵行为,包括网络扫…

    2023年9月3日
    47000

发表回复

登录后才能评论

联系我们

4000-747-360

在线咨询: QQ交谈

邮件:ixuntao@qq.com

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

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