北京阿里云代理商: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

(0)
luotuoemo的头像luotuoemo
上一篇 2024年3月15日 18:51
下一篇 2024年3月15日 18:52

相关推荐

  • 阿里云国际站充值:access数据库怎样保存

    如果您需要在阿里云国际站上保存 Access 数据库,通常涉及到几个步骤,因为阿里云不直接支持 Microsoft Access 数据库。以下是一些可能的方法: 使用ECS(Elastic Compute Service): 您可以在阿里云上创建一个虚拟机(ECS),在该虚拟机上安装 Windows 操作系统。 在安装了 Windows 的 ECS 实例上安…

    2024年7月5日
    8200
  • 沈阳阿里云代理商:asp.net mvc 网站域名

    创建一个新的 ASP.NET MVC 项目 在项目中添加一个控制器来处理网站的首页和其他页面 通过阿里云代理商购买一个域名 在阿里云控制台中配置域名解析,将域名指向你的服务器地址 在 ASP.NET MVC 项目中设置网站的基本信息和域名信息 将项目发布到服务器上,确保网站能够正常访问 测试域名是否能够成功访问你的 ASP.NET MVC 网站 通过以上步骤…

    2024年2月27日
    12100
  • 阿里云企业物联网平台和生活物联网平台区别

    物联网和云计算和移动互联网的区别 物联网对应了互联网的感觉和运动神经系统。云计算是互联网的核心硬件层和核心软件层的集合,也是互联网中枢神经系统萌芽。大数据代表了互联网的信息层(数据海洋),是互联网智慧和意识产生的基础。包括物联网,传统互联网,移动互联网在源源不断的向互联网大数据层汇聚数据和接受数据。物联网所需要感受的物件对象范围非常之宽,物联网收集数据,我们…

    2023年8月26日
    14100
  • 七台河阿里云企业邮箱代理商:阿里企业邮箱怎么开启smtp

    阿里云企业邮箱的SMTP功能开启 优势和好用之处 高可靠性 阿里云企业邮箱采用云计算技术,具有高可靠性。服务器设备全天候监控,保障数据传输的稳定性和安全性。 快速设置 开启SMTP功能非常简单。用户只需要登录阿里云企业邮箱控制台,在设置中找到“邮件发送协议”选项,轻松启用SMTP。 高效邮件发送 开启SMTP后,用户可以通过使用各种邮箱客户端或第三方软件,如…

    2024年2月5日
    9600
  • 企业更换阿里云企业邮箱后员工的工作效率提升明显吗?

    企业更换阿里云企业邮箱后员工的工作效率提升明显吗? 阿里云企业邮箱的优势 阿里云企业邮箱是一款基于云计算技术的企业级邮箱产品,具有以下优势: 安全可靠:阿里云具备强大的安全防护机制,保障企业数据不被泄露。 高效便捷:支持大容量邮箱存储,快速收发邮件,提高工作效率。 多终端同步:支持PC端、手机端、网页端同步使用,方便灵活。 邮件筛选:支持智能邮件分类和过滤功…

    2024年10月17日
    6200

发表回复

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

联系我们

4000-747-360

在线咨询: QQ交谈

邮件:ixuntao@qq.com

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

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