北京阿里云代理商: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数据库插入数据的步骤可以分为以下几个部分: 注册阿里云国际站账号: 访问阿里云国际站的官方网站。 点击注册,填写必要的信息如邮箱、电话等。 完成邮箱或手机的验证过程。 设置账号密码和安全设置。 购买和配置云服务器: 登录阿里云控制台。 选择合适的云服务器产品,根据需要选择操作系统。对于运行Access数据库,通常需要Wind…

    2024年7月5日
    45000
  • 无锡阿里云代理商:access数据库列统一赋值

    要在Access数据库中给所有列统一赋值,可以使用SQL语句或VBA代码来实现。下面是两种方法示例: 方法一:使用SQL语句 UPDATE 表名 SET 列名 = 值; 例如,如果要将一个表中的所有列的值都设置为0,可以使用以下SQL语句: UPDATE 表名 SET 列名1 = 0, 列名2 = 0, 列名3 = 0; 注意,这种方法适用于所有列都要赋相同…

    2024年2月2日
    43400
  • 阿里云主要提供什么服务

    阿里云是阿里巴巴集团旗下的云计算服务提供商,主要提供以下服务: 云服务器ECS(Elastic Compute Service):提供可伸缩的云服务器,满足用户多种计算需求。 云数据库RDS(Relational Database Service):提供稳定可靠的云数据库服务,包括MySQL、SQL Server、PostgreSQL、Oracle等多种数据…

    2023年9月17日
    45800
  • 阿里云计算股票行情

    请问云计算概念股有哪些?云计算相关上市公司股票一览 云计算股票上市公司概念股一览[1]、浪潮信息(000977):公司主营业务为计算机及软件、电子产品及其他通信设备、商业机具、电子工业用控制设备、空调数控装置、电子计时器、电控玩具、教学用具的开发、生产、销售;技术信息服务、计算机租赁业务等。公司控股股东浪潮集团与微软签署了全球战略合作伙伴备忘录,双方将建立全…

    2023年8月26日
    48300
  • 呼和浩特阿里云企业邮箱代理商:阿里云代理平台官网

    呼和浩特阿里云企业邮箱代理商:阿里云代理平台官网 随着互联网的快速发展,企业邮箱成为了企业沟通和商务往来的重要工具之一。作为业内领先的企业邮箱服务提供商,阿里云企业邮箱以其稳定性、安全性和便捷性受到了广泛的认可。 阿里云企业邮箱的优势: 稳定性:阿里云企业邮箱基于阿里云强大的云计算能力,保证服务稳定运行,不会因为服务器故障而导致邮箱无法正常使用。 安全性:阿…

    2024年2月18日
    55500

发表回复

登录后才能评论

联系我们

4000-747-360

在线咨询: QQ交谈

邮件:ixuntao@qq.com

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

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