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

相关推荐

  • 广州阿里云代理商:阿里巴巴云短信

    阿里巴巴云短信是阿里云提供的一种短信服务,广州阿里云代理商可以帮助企业和个人进行阿里巴巴云短信的配置和使用。 阿里巴巴云短信可以用于发送验证码、通知、营销等短信,具有高可靠性、高成功率、高覆盖率等特点。通过广州阿里云代理商,用户可以快速获取短信通道,并进行短信模板的创建、审核和管理,同时还可以进行短信发送和统计。 作为广州阿里云代理商,会提供一系列的短信服务…

    2023年12月13日
    17000
  • 阿里云会员管理系统

    阿里云系统怎样开usb调试 方法一:打开USB调试模式——手动安装法;1、电脑端访问官网下载地址:http://sj.qq.com/qs下载QQQuicksetting.apk并保存到电脑。2、选择U盘模式当用usb连接手机和电脑时,手机端会弹出几种模式让您选择,此时选择U盘模式;3、添加QQQuickSetting.apk到可移动磁盘(SD卡)中选择U盘模…

    2023年8月26日
    16500
  • 阿里云服务器开放端口

    怎么查看阿里云主机服务器开放了哪些端口 1.Windows可以在cmd窗口下输入命令:netstat -abn查看端口监听情况和对应的进程。2.如果是linux,请输入命令:netstat -apn查看。希望可以帮到你! 怎么查看阿里云主机开放了哪些端口 自己的主机,可以在开启内网服务监听端口后,去看下防火墙和安全组是否允许该端口接受公网的访问。别人的主机,…

    2023年8月26日
    15500
  • 佛山阿里云代理商:asp.net图片展示

    在ASP.NET中,你可以使用Image控件来展示图片。以下是一个简单的示例: <asp:Image ID="imgPhoto" runat="server" /> protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack)…

    2023年12月30日
    16700
  • 阿里云图片服务器oss

    阿里云的图片服务器OSS(Object Storage Service)是一个稳定、安全、低成本、高扩展性的对象存储服务。它可以托管和存储大规模的图片数据,同时提供高可靠性和高可用性的访问。阿里云OSS具有以下特点: 全球部署:OSS在全球各地设有多个数据中心,可以满足不同地区用户的需求,保证数据的低延迟访问。 高可靠性:OSS采用多副本存储和数据冗余机制,…

    2023年9月25日
    16500

发表回复

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

联系我们

4000-747-360

在线咨询: QQ交谈

邮件:ixuntao@qq.com

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

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