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开发中需要非常注意的问题之一。


相关知识:
安卓7怎么开开发者
开发者选项是 Android 系统隐藏的、专为开发人员定制的一些功能。如果您是一名 Android 开发人员,那么开发者选项将非常有用。因为在开发过程中,您可能需要使用一些系统级的功能、调试工具或测试流程。而很多这样的功能默认情况下是不开放给普通用户使用。
2023-05-23
安卓5
开发者模式是一个在Android系统中的选择,允许用户访问隐藏的开发选项,例如USB调试,GPU呈现模式,跟踪整个系统等等。开发人员模式经常使用在测试和开发应用程序时,但是在某些情况下,它们可能会影响到普通用户。 此外,这允许您更改系统或应用程序配置,这可
2023-05-23
linux和安卓开发
Linux和Android作为开源的操作系统,一直是开发者们的不二之选。本文将在原理和详细介绍两个方面为大家介绍这两个开发领域。一、Linux开发1. Linux原理Linux操作系统是一个强大的开源操作系统,广泛应用于服务器端、移动设备、嵌入式系统等各个
2023-05-23
kotlin开发安卓程序
Kotlin 是一种在 Java 虚拟机上运行的静态类型编程语言,它被广泛应用在安卓开发中。作为一种基于 JVM 的编程语言,它和 Java 具有很高的交互性,可以与 Java 代码互相调用。在 Android Studio 3.0 及其以上版本中,Kot
2023-05-23
java程序员怎么学习安卓开发
如果你已经是一名Java程序员,并且想学习安卓开发,那么需要掌握以下几个方面:1. Java编程语言安卓开发使用Java编程语言作为基础。如果你已经是一名Java程序员,那么这一点不用担心。如果你还不熟悉Java,你可以通过学习Java语言基础,Java面
2023-05-23
eclipse安卓开发环境搭建
Eclipse是一个基于Java的开源集成开发环境(IDE),它被开发用于Java编程语言,但现在已成为多语言开发环境的标准,包括C++, Python, PHP等等。搭建安卓开发环境需要以下步骤:1. 下载Eclipse IDE首先,在官网上下载Ecli
2023-05-23
2018安卓巴士开发者大会
2018年11月7日-8日,由安卓巴士主办、国内顶尖智能交通玩家齐聚一堂的“2018安卓巴士开发者大会”在北京如期而至。本次大会上,全球智能交通界的领袖士与一众从业人士共同探讨技术变革、新商业模式、用户需求等共性问题,促进行业发展,推进行业健康可持续发展。
2023-05-23
芜湖安卓app开发费用多少
芜湖安卓APP开发费用因开发团队实力、项目复杂度、需求功能、设计美观度等因素而异,一般在1万~20万不等。下面详细介绍一下影响芜湖安卓APP开发费用的因素:1.开发团队实力:一般来说,技术实力较强的团队比技术实力较弱的团队开发APP费用更高。2.项目复杂度
2023-04-28
河南知识付费安卓app开发平台有哪些
知识付费安卓app开发平台是指一种通过提供优质知识、技能等内容来帮助用户学习、提升技能水平并交付相应费用的平台。河南知识付费安卓app开发平台有以下几种:1. Udemy:Udemy是全球著名的在线学习平台之一,提供大量丰富多样的付费课程,包括电脑编程、可
2023-04-28
安卓app开发源码编译
Android应用程序开发是使用Java编程语言编写的。在编写应用程序之后,需要编译代码并生成可执行文件。本文将详细介绍如何从源代码编译一个Android应用程序。1. 确定安装了必需的软件在进行编译之前,您需要确保计算机已安装必需的软件。以下是必需的软件
2023-04-28
如何快速制作一个安卓app
制作安卓App可以采用多种方式,以下是其中的三种:1. 使用App制作工具:目前市面上有很多App制作工具,可以帮助开发者快速制作出一款安卓App。通过选择预定义的功能模块,填充相关内容,如图片、文字、音频等就能制作出App。这种方式的优点是快速,不需要编
2023-04-28
在安卓开发app的流程图
安卓开发App的流程涉及到许多技术和工具,以下是一个简化的原理或详细介绍的流程图。帮助您了解一般的安卓应用程序开发过程。1. 概念/设计阶段 - 确定应用目标、功能列表和实现特点 - 设计应用程序的用户界面(UI)和用户体验(UX) - 创建原
2023-04-28
©2015-2023 安卓益APP Anzhuoe.com 蜀ICP备17007734号-1