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

相关推荐

  • 常州阿里云代理商:asp 读取mysql数据库

    要在ASP中读取MySQL数据库,你可以使用ADO连接来实现。以下是一个简单的示例代码: <% Dim conn Dim rs Dim sql Set conn = Server.CreateObject("ADODB.Connection") conn.Open "DRIVER={MySQL ODBC 5.1 Drive…

    2024年2月19日
    65700
  • 购买阿里云服务器和数据库哪个好

    阿里云提供了多种服务器和数据库产品,选择适合自己的可以根据以下几个方面考虑: 服务器性能:阿里云提供了不同规格和配置的服务器,可以根据自己的需求选择高性能或者低成本的服务器。 数据库类型:阿里云提供了多种数据库产品,包括关系型数据库(RDS)、文档数据库(MongoDB)、数据仓库(AnalyticDB)等。可以根据自己的业务需求选择合适的数据库类型。 可用…

    2023年10月9日
    71600
  • 漳州阿里云代理商:安装apach教程

    安装 Apache 的教程如下: 登录服务器打开终端,使用 ssh 命令登录到你的服务器上。 更新软件包列表运行以下命令更新软件包列表: sudo apt update 安装 Apache运行以下命令来安装 Apache: sudo apt install apache2 启动 Apache 服务安装完成后,运行以下命令启动 Apache 服务: sudo …

    2023年12月27日
    1.9K00
  • 阿里云国际站注册教程:安卓如何获取网络时间

    在Android中获取网络时间,我们需要使用 NTP (Network Time Protocol)协议,我们可以使用第三方的库或者自己来实现。下面是一种自己实现的方法。 代码如下: import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.InetAddr…

    2024年3月28日
    83700
  • 西藏阿里云智创中心

    阿里云网站ICP备案详细操作流程 依据工信部的卖运要求国内网站必须有备案号才能开通,阿里云网站ICP备案是每个在阿里云搭建网站的用户都要操作的。以下的信息务必真实有效,不能有差错,后面阿里云自查、管局检查出来会给你打回来重新填写,耽误下备案号时间。      如果你使用阿里云app备案,请参考阿里云APP备案操作流程      一、备案流程      进入备…

    2023年8月28日
    68200

发表回复

登录后才能评论

联系我们

4000-747-360

在线咨询: QQ交谈

邮件:ixuntao@qq.com

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

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