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

相关推荐

  • 阿里云国际站充值:ajax调用阿里api

    相似问题的答案是:首先,你需要登录阿里云国际站账户,找到需要充值的产品或服务。 然后,在页面的右侧选择“备案/续费/升级”,再选择“立即续费”。 在购物车页面确认信息无误之后,点击“去付款”按钮进入付款页面。 在付款页面选择合适的支付方式,填写相应的支付信息,点击“立即支付”后按照页面提示操作即可完成充值。 对于使用Ajax调用阿里云API,你需要首先在阿里…

    2024年3月27日
    19200
  • 阿里云数据库导出到本地失败

    导出阿里云数据库到本地失败可能有多种原因,以下是一些常见的解决方法: 检查权限:确保您拥有导出数据库的权限。检查您所使用的数据库账号是否拥有导出数据库的权限,或者您是否具有管理员权限。 检查网络连接:确保您的本地计算机与阿里云数据库之间的网络连接正常。如果网络连接存在问题,可能导致导出失败。您可以尝试使用其他网络连接或者联系阿里云技术支持寻求帮助。 检查数据…

    2023年10月9日
    13500
  • 深圳阿里云代理商:安全承诺协议

    阿里云代理商承诺确保所有的阿里云服务都符合最高安全标准。我们将采取一切必要措施以确保您的数据的安全、完整、可用性和保密性,并遵守所有相关的国际、行业和政府标准和规定。 我们的安全承诺协议包括以下内容: 数据隐私和保护:我们将尽一切努力确保您的数据不被非法获取、泄露或篡改。我们承诺在不影响服务质量和效率的前提下,保护客户的隐私数据。 系统安全和可用性:我们将付…

    2023年12月29日
    13400
  • 常德阿里云代理商:apache 拒绝某个域名

    如果您在阿里云上遇到了Apache拒绝某个域名的问题,您可以按照以下步骤进行排查和解决: 检查Apache配置文件:查看Apache配置文件(通常是httpd.conf或apache2.conf)中是否存在与该域名相关的规则或限制。您可以使用文本编辑器打开该文件,并搜索关键词或域名来查找相关设置。 检查虚拟主机配置:如果您使用了虚拟主机来托管多个域名,那么您…

    2024年2月15日
    13900
  • 物联网开发平台阿里云

    国内有实力的做物联网开发的公司有哪些? 这个也还不少,虽然物联网平台门槛比较高,但是也还是有些公司在做,那些小的伪物联网平台我就不说了,主要说说几个大的综合型的物联网平台吧。中国移动的中移物联,百度的百度云天工,阿里的阿里云LINK物联市场,中国通服的CCS开放物联网平台,中国电信也、亚马逊也有自己的物联网平台,其他的还有也些行业细分领域的物联网平台,如零售…

    2023年8月25日
    11900

发表回复

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

联系我们

4000-747-360

在线咨询: QQ交谈

邮件:ixuntao@qq.com

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

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