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

相关推荐

  • 敦煌阿里云企业邮箱代理商:钉钉企业邮箱是免费的吗

    以敦煌阿里云企业邮箱代理商:钉钉企业邮箱是免费的吗 阿里云企业邮箱优势 阿里云企业邮箱是一款基于云计算技术的企业级电子邮件服务,具有以下优势: 稳定可靠:阿里云提供的服务器设备采用高性能硬件配置和多机房部署,保障企业邮箱的稳定性和可靠性。 安全保密:阿里云企业邮箱支持SSL加密传输和国际标准的防垃圾邮件系统,有效保护企业的邮箱安全和私密性。 统一管理:企业管…

    2024年1月17日
    62600
  • 嘉兴阿里云代理商:阿里云 centos 数据盘

    扩容操作步骤如下: 在阿里云控制台找到您的云服务器,进入云服务器管理页面。 点击“更多”按钮,选择“磁盘扩容”选项,进入磁盘扩容页面。 在磁盘扩容页面中,选择要扩容的数据盘,并选择扩容的大小。 点击“确定”按钮,开始扩容操作。 扩容完成后,您需要登录到您的云服务器操作系统中,执行扩容命令来扩容分区。 以下是 CentOS 系统下扩容分区的具体操作步骤: 进入…

    2024年2月28日
    62500
  • 新泰阿里云企业邮箱代理商:钉钉上怎么查看自己的邮箱地址

    如何在钉钉上查看自己的邮箱地址 1. 在钉钉中打开阿里云企业邮箱应用 首先,在钉钉中找到并打开阿里云企业邮箱应用。可以通过搜索框输入“阿里云企业邮箱”,然后点击相应的应用图标进入。 2. 进入邮箱设置页面 在阿里云企业邮箱应用中,点击左上角的菜单按钮,然后选择“设置”选项。 3. 查看邮箱地址 在设置页面中,你可以看到你的邮箱地址。一般情况下,邮箱地址由用户…

    2024年1月12日
    70800
  • 济宁阿里云代理商:android wifi设备通信

    安卓WiFi设备通信是在安卓系统的设备之间通过WiFi进行信息交换的过程。具备WiFi功能的安卓设备(如智能手机、平板电脑等)可以在同一WiFi网络下进行数据传输,也可以作为某些特定的IoT设备的控制端,通过网络对设备进行操作。 阿里云作为云服务的提供商,提供了大量服务可以帮助代理商实现WiFi设备通信的功能,如物联网平台、移动开发服务等。代理商可以将这类服…

    2024年3月16日
    62500
  • 阿里云企业邮箱:为什么电商公司需要邮件智能分类?

    阿里云企业邮箱:为什么电商公司需要邮件智能分类? 随着电商业务的蓬勃发展,企业处理的信息量急剧增加。邮件作为企业内部外部沟通的重要渠道,其管理和应用效率对公司的运营成效产生了直接影响。特别是在电商行业,每天都要面对订单处理、客户咨询、供应链沟通、售后服务等大量邮件。此时,传统的人工筛选方式已无法满足高效与精准的需求,邮件智能分类功能应运而生。本文将结合阿里云…

    2025年6月13日
    51500

发表回复

登录后才能评论

联系我们

4000-747-360

在线咨询: QQ交谈

邮件:ixuntao@qq.com

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

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