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

在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

相关推荐

  • 阿里云国际站:阿里云wordpress更新

    阿里云国际站(Aliyun International)提供了一系列与WordPress相关的服务和更新。以下是阿里云国际站的WordPress相关更新内容: WordPress版本更新:阿里云国际站会同步WordPress官方的版本更新,包括安全修复、新功能等。 WordPress插件和主题更新:阿里云国际站提供的WordPress托管服务会自动检测插件和…

    2024年1月30日
    70700
  • 阿里巴巴云客服如何工作的答案

    阿里巴巴云客服是一种通过云计算技术进行在线客服服务的工具。它采用了人工智能技术和自然语言处理算法,能够识别和理解用户提出的问题,并给出相应的答案和建议。 具体工作流程如下: 用户提问:用户通过阿里巴巴云客服平台提交问题,可以是文字、语音或图片。 问题识别:阿里巴巴云客服通过自然语言处理算法对用户提问进行分析和解析,识别出用户的意图和问题类型。 知识库查询:阿…

    2023年10月2日
    65900
  • 烟台阿里云代理商:app证书更新失败

    很抱歉听到您的问题。这可能有多种原因导致app证书更新失败,以下是一些常见的问题和解决方法: 检查证书过期日期:请确保您的证书没有过期。如果过期,请重新申请新的证书并更新。 检查证书文件格式:请确保您的证书文件格式正确。通常,证书应该是PEM格式。如果不确定,请联系阿里云客服获取正确的证书格式。 检查证书私钥匹配:请确保您的证书私钥与证书匹配。如果私钥不正确…

    2024年1月31日
    64800
  • 兰州阿里云代理商:阿里云编程

    阿里云编程是指利用阿里云提供的编程接口进行开发以及管理云资源的过程。作为兰州的阿里云代理商,我们可以提供以下服务: 云服务器实例管理:帮助您创建、启动、停止和销毁云服务器实例,根据您的需求调整实例的配置和规模,以及管理实例的网络、存储和安全等设置。 数据库管理:协助您创建和管理云数据库实例,包括基于 MySQL、Redis、MongoDB 等的数据库服务,提…

    2024年2月12日
    1.1K00
  • 清远阿里云企业邮箱代理商:阿里云邮箱撤回邮件

    阿里云企业邮箱代理商:阿里云邮箱撤回邮件 阿里云企业邮箱是一款功能强大的企业级邮箱服务,为企业提供稳定、安全、智能的电子邮件通信解决方案。下面将介绍阿里云企业邮箱的优势。 1. 安全可靠 阿里云企业邮箱采用多重安全保障机制,包括SSL加密传输、多层反垃圾邮件过滤、病毒扫描等功能,确保企业成员的邮件通信安全可靠。 2. 强大的管理功能 阿里云企业邮箱提供丰富的…

    2024年2月16日
    65500

发表回复

登录后才能评论

联系我们

4000-747-360

在线咨询: QQ交谈

邮件:ixuntao@qq.com

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

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