北京阿里云代理商:android4.0 读取短信

在Android 4.0及更高版本中,应用需要用户的明确同意才能读取他们的短信。在您的应用中,首先需要在应用的清单文件中添加 “READ_SMS”权限:

<uses-permission android:name="android.permission.READ_SMS"/>

然后,在您的应用需要读取短信的时候,需要动态请求用户权限:

if (checkSelfPermission(Manifest.permission.READ_SMS)
    != PackageManager.PERMISSION_GRANTED) {
    requestPermissions(new String[]{Manifest.permission.READ_SMS},
        MY_PERMISSIONS_REQUEST_READ_SMS);
}

在权限被用户授权后,您就可以读取短信数据:

Uri smsUri = Uri.parse("content://sms/inbox");
Cursor cursor = getContentResolver().query(smsUri, null, null, null, null);

while(cursor.moveToNext()) {
    String address = cursor.getString(cursor.getColumnIndex("address"));
    String body = cursor.getString(cursor.getColumnIndexOrThrow("body"));
    // do something
}

请注意,因为隐私问题,Google在Android Q(10)开始不再允许应用读取短信日志,除非应用设置为默认的短信应用。所以在Android Q及以后的版本,上述代码可能无法正常工作。

Android 4.0读取短信功能需要调用SMS相关API,主要步骤如下:

1)首先,你需要在AndroidManifest.xml文件中添加READ_SMS权限,以便你的应用程序可以读取用户的短信。

<uses-permission android:name="android.permission.READ_SMS"/>

2)然后,你可以通过以下方式读取短信:

Uri uri = Uri.parse("content://sms/inbox");
Cursor c= getContentResolver().query(uri, null, null ,null,null);
startManagingCursor(c);

// Read the sms data and store it in the list
if(c.moveToFirst()) {
    for(int i=0; i < c.getCount(); i++) {
        SMSData sms = new SMSData();
        sms.setBody(c.getString(c.getColumnIndexOrThrow("body")).toString());
        sms.setNumber(c.getString(c.getColumnIndexOrThrow("address")).toString());
        smsList.add(sms);
        
        c.moveToNext();
    }
}
c.close();

以上代码首先从sms/inbox的Uri中得到一个cursor,然后遍历cursor并将数据存储在SMSData列表中。SMSData是一个简单的类,包括了短信的body和number。

注:“number”表示发送短信者的手机号,“body”表示短信内容。

北京阿里云代理商:android4.0 读取短信

请注意,这只会读取收到的短信,如果你希望读取已发送的短信,你可以改变uri为”content://sms/sent”。

还需要引起注意的是,从Android 4.4(API level 19)开始,只有默认的短信应用才能对SMS数据库有写入权限。其他应用只允许读取短信。同时,在安卓Q 或以上版本,默认短信应用需要添加sms相关权限,比如:

<uses-permission
    android:name="android.permission.WRITE_SMS"
    android:maxSdkVersion="28" />
<uses-permission android:name="android.permission.READ_SMS" />
<uses-permission android:name="android.permission.RECEIVE_SMS" />

发布者:luotuoemo,转转请注明出处:https://www.jintuiyun.com/166563.html

Like (0)
luotuoemo的头像luotuoemo
Previous 2024年3月15日 18:51
Next 2024年3月15日 18:52

相关推荐

  • 宁德阿里云代理商:apache 部署证书

    要在Apache上部署证书,您可以按照以下步骤操作: 获取证书文件:从您的证书提供商处获取证书文件。通常,您将收到证书文件(例如example.crt),私钥文件(例如example.key)和中间证书文件(例如ca.crt)。 将证书文件上传到服务器:将证书文件上传到服务器上,您可以选择将其放置在Apache的配置文件夹内(例如/etc/httpd/con…

    2024年2月5日
    9300
  • 阿里云国际站注册教程:阿里云服务器公网内网

    阿里云是中国最大的云计算服务提供商之一,提供多种云服务,包括云服务器、数据库服务、存储和大数据处理等。如果您想在阿里云国际站注册并设置服务器,可以按照以下步骤操作: 访问阿里云国际站: 打开浏览器,访问阿里云国际官网。 注册账号: 点击页面右上角的“免费账号”或“注册”按钮。 输入您的电子邮件地址,并设置密码。 完成邮箱验证和基本信息填写。 登录账号: 使用…

    2024年7月6日
    8200
  • 衡阳阿里云代理商:api 请求参数

    在使用阿里云API时,一般需要传递一些请求参数。以下是一些常见的API请求参数: AccessKeyId:阿里云账号的访问密钥ID,用于标识用户身份。 Signature:签名信息,用于对请求进行签名验证,确保请求的完整性和安全性。 SignatureMethod:签名算法,一般为HMAC-SHA1。 Timestamp:时间戳,表示请求的时间,格式为ISO…

    2024年1月31日
    7100
  • 淮安阿里云代理商:阿里短信jar包

    阿里短信SDK是阿里云为开发者提供的一款用于发送短信的Java开发包。通过使用阿里短信SDK,开发者可以方便地集成阿里云短信服务,实现发送短信的功能。 关于阿里短信SDK的jar包,你可以通过以下步骤获取: 登录阿里云官网,在控制台中找到阿里云短信服务。 进入短信服务管理页面,找到开发者工具栏目。 在开发者工具中,点击“SDK下载”按钮。 在SDK下载页面中…

    2024年1月7日
    9900
  • 开放阿里云服务器端口协议失败

    阿里云远程登录出现 :远程桌面经常连接不上,提示:由于一个协议错误,代码(0x112f)xxxxx 说明电脑上telnet这个功能没有打开。1. 打开电脑的控制面板2. 找到程序和功能3. 左侧的启动或关闭Windows功能4、找到“telnet客户端”,打上对勾就可以啦 阿里云amh8888端口怎么链接不上 阿里云服务器特色,不稳定。都这样,请注意和客服沟…

    2023年8月26日
    9300

发表回复

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

联系我们

4000-747-360

在线咨询: QQ交谈

邮件:ixuntao@qq.com

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

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