java开发安卓9

随着Android版本的不断升级,短信权限管理越来越严格,开发者需要在开发Android应用的过程中注意对短信权限的适配。本文将介绍如何在Android 9.0上适配短信权限。

1. 短信权限简介

在Android系统中,短信权限是需要动态申请的权限之一。如果应用需要在用户的手机上读取或发送短信,必须获取到短信权限。在Android 6.0之前,短信权限被包含在了“电话”权限中,只要申请了该权限,应用就可以读取或发送短信。但是从Android 6.0开始,短信权限被拆分出来,必须单独申请。

2. Android 9.0对短信权限的变化

在Android 9.0中,Google进一步加强了对短信权限的管理,主要有以下几个变化:

(1)对短信的限制更加严格

Android 9.0限制了应用对用户的所有短信的访问权限,只有用户选择将某个应用设为短信应用程序,才能访问用户的所有短信。其他应用只能访问用户回复或创建的短信。

(2)限制部分非系统应用读取用户的短信

除了设为短信应用程序的应用,其他非系统应用只能读取其自己创建或用户回复的短信。这就使得一些垃圾信息过滤器、备份应用、智能短信等应用受到了影响。

3. 如何在Android 9.0上适配短信权限

(1)申请短信权限

首先我们需要在Manifest.xml文件中声明需要使用短信权限:

```xml

```

然后在代码中动态申请短信权限,如下所示:

```java

if (ContextCompat.checkSelfPermission(MainActivity.this, Manifest.permission.READ_SMS)

!= PackageManager.PERMISSION_GRANTED) {

ActivityCompat.requestPermissions(MainActivity.this,

new String[]{Manifest.permission.READ_SMS},

MY_PERMISSIONS_REQUEST_READ_SMS);

}

```

此时,用户会看到一个弹窗,询问是否授权应用读取短信。

(2)设为短信应用程序

在Android 9.0上,开发者需要动态地设置应用为短信应用程序。只有设为短信应用程序,应用才有权访问用户的所有短信。

要让应用成为短信应用程序,需要在代码中设置,如下所示:

```java

if (SmsManager.getDefault().getSubscriptionId() == SubscriptionManager.INVALID_SUBSCRIPTION_ID) {

ComponentName componentName = new ComponentName(MainActivity.this, SmsReceiver.class);

getPackageManager().setComponentEnabledSetting(

componentName,

PackageManager.COMPONENT_ENABLED_STATE_ENABLED,

PackageManager.DONT_KILL_APP);

Intent intent = new Intent(Telephony.Sms.Intents.ACTION_CHANGE_DEFAULT).putExtra(Telephony.Sms.Intents.EXTRA_PACKAGE_NAME, getPackageName());

startActivity(intent);

}

```

该代码将该应用的包名传入到设置默认短信应用程序的Intent中,启动该Intent后,系统会弹出一个提示框,询问用户是否将该应用设为默认的短信应用程序。

总结

通过上述介绍可以看出,在Android 9.0上适配短信权限相对于之前的版本更加严格,开发者需要在代码中设置为短信应用程序,才能访问到用户的短信。当然,这也增加了用户的隐私保护,让应用不能随意访问用户的短信,这也是在Android开发中需要非常注意的问题之一。


相关知识:
安卓12开发者模式没有无线调试
Android开发者模式是Android系统里的一个隐藏功能,它为Android开发人员提供了一系列非常有用的调试工具和选项。但是在Android 12中,开发者模式中的无线调试选项已经被删除了。这是为什么呢?首先,让我们先了解一下无线调试的概念。在通常的
2023-05-23
安卓12开发版体验软件
随着时间的推移,安卓系统在全球范围内逐渐成为一种主流的移动设备操作系统。最新的安卓版本——安卓12还处于开发版阶段,但是已经可以通过体验软件来感受该版本的特点和优化。下面就让我们来详细介绍一下安卓12开发版体验软件的原理和使用方法。安卓12开发版是由谷歌发
2023-05-23
安卓11开发模式如何关闭微信提示
在 Android 11 上,有一个叫作“应用程序在使用此功能时需要”的功能,其目的是为了增加用户对隐私的控制。当某个应用程序需要使用您的位置、相机、麦克风等一些敏感的功能时,它就会显示一个弹出窗口来请求您的授权。然而,微信提示可能会让您感到烦恼,因此您可
2023-05-23
uniapp安卓相机sdk开发
Uniapp是一种跨平台开发框架,它可以帮助开发人员同时开发出Android、iOS和Web应用程序。在Uniapp中,可以使用SDK对Android相机进行开发,以实现更加丰富的相机功能。Uniapp Android相机SDK的开发原理是基于Androi
2023-05-23
uniapp开发安卓ios
Uniapp是由DCloud推出的基于Vue框架的跨平台开发工具,可以使用一套代码同时开发出不同平台的应用,包括安卓、iOS、小程序、H5等。这样的开发方式大大提高了开发效率,同时也降低了开发成本。Uniapp基于Weex的模式实现跨平台,它采用了自有的编
2023-05-23
c#开发安卓环境搭建方法
在过去,C#是针对于Windows的一种编程语言,但现在它已经出现在了更多的平台上。开发者们可以使用C#来开发Android、iOS、Mac 和Linux的应用程序,丰富了C#的应用领域,让更多人受益。在本文中,我们将介绍如何使用C#在Windows平台下
2023-05-23
2年开发安卓的一些经验和忠告
我已经在安卓开发领域工作了2年,在这段时间里,我积累了许多经验和忠告,以下是我想分享给初学者们的一些重要经验点和技巧。1. 学习基础知识非常重要在你开始深入学习安卓开发之前,你需要了解最基本的Java编程知识。在学习过程中的大部分代码都将是Java代码,所
2023-05-23
社交安卓app开发
在本教程中,我们将详解如何创建一个简易的社交安卓应用。该应用将允许用户注册、登录并创建个人资料。他们可以与其他用户互相发送消息,以及查看关注列表。一、开发环境和工具1. Android Studio:用于 Android 应用程序开发的官方集成开发环境。2
2023-04-28
开发安卓手机app
开发安卓手机应用程序(APP)是一个涉及多个步骤和组件的过程。这篇文章将为您介绍应用程序的开发原理和详细过程,涵盖了从构思到实现到发布的各个阶段。1. 熟悉Android平台开始开发Android应用程序之前,您需要了解Android平台的基础知识和特性。
2023-04-28
安卓开发app接入微信支付
接入微信支付需要以下几个步骤:1.在微信支付平台注册账户,并创建应用2.在应用中获取到app支付的相关信息,包括app id、商户号、密钥、证书等3.在应用中集成微信支付sdk,可以使用官方提供的Sdk或第三方库4.在应用中创建订单,并将订单信息传递到服务
2023-04-28
安卓app存储开发实例
Android中存储数据的方式有多种不同的选项,可以根据实际需求选择不同的存储方式。下面就简要介绍一下在Android中存储数据的三种主要方式。1. SharedPreferencesSharedPreferences 是 Android 提供的轻量级的数
2023-04-28
制作安卓app下载链接
要制作安卓app下载链接,你需要做以下几个步骤:1. 开发你的安卓应用程序。2. 在发布应用程序之前,你需要签署你的应用程序。这样做的原因是为了确保应用程序是由你或你的组织开发的,同时将应用程序打包成.apk文件,以供用户下载安装。3. 上传你的应用程序到
2023-04-28
©2015-2023 安卓益APP Anzhuoe.com 蜀ICP备17007734号-1