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


相关知识:
安卓8
开发者选项是 Android 系统中的一个高级设置选项,包含了很多测试和调试功能,如 USB 调试、GPU 渲染、报告 bug 等等。开发者选项在默认情况下是隐藏的,需要通过特定操作才能暴露出来。而在 Android 8.1.0 及其更高版本中,开发者选项
2023-05-23
安卓10怎么开启开发者模式
在Android系统中,开发者模式是一个非常重要的设置,可以让普通用户拥有更多的权限,进入系统更深层次的调试和优化。开启开发者模式之后,你可以进行USB调试、模拟定位、查看CPU、GPU渲染等信息,还可以使用第三方应用调试工具等。下面,我将为大家详细介绍如
2023-05-23
安卓 app自己开发
Android应用程序开发是指使用Java编程语言和Android软件开发工具包(SDK)来开发移动应用程序。在这篇文章中,我将为你介绍一些Android应用程序开发的基本原理,并提供一些详细的步骤,帮助你开始自己开发Android应用程序。了解 Andr
2023-05-23
安卓 开发 框架
安卓开发框架指的是一整套为开发安卓应用提供支持的协议、工具集和库。包含了Android SDK、开发工具、技术文档等等,旨在帮助开发者优化应用程序的开发效率,增强程序的可靠性和安全性。Android Framework 的结构图如下所示: ![image.
2023-05-23
安徽安卓智能终端开发
安卓智能终端开发是指基于安卓系统的智能终端应用开发,它是一种基于安卓操作系统的开发模式。目前,在智能终端领域中,安卓系统应用的使用率越来越高,越来越多的智能终端设备采用安卓系统作为操作平台,因此,安卓智能终端开发具有很高的应用价值。安卓智能终端开发的原理如
2023-05-23
qt开发安卓网络应用
Qt是一个流行的跨平台开发工具套件,它能够轻松地创建Windows、Linux和macOS等不同平台下的应用程序。Qt适用于多种领域,而移动互联网则是其中一个主要的领域。在Qt中,我们可以使用Qt网络设计器来创建网络应用程序。本文将介绍如何在Android
2023-05-23
java安卓开发和web开发区别
Java安卓开发和Web开发是两个不同的领域,虽然Java语言是它们的共同点,但两者有着不同的特点和用途。下面将从原理和详细介绍两个方面来区别它们。一、原理上的区别1. Java安卓开发原理Java安卓开发是利用Java语言进行开发的移动端应用程序,可安装
2023-05-23
golang语言能开发安卓吗
近年来,Go 语言(简称 Golang )在开发领域内备受关注,而 Android 属于移动开发市场上的重要一员,那么 golang 能否用于开发安卓应用呢?本文将对此问题进行详细介绍。首先,需要明确的是,Go 语言本身可以在多个平台进行编译,包括 And
2023-05-23
android安卓应用开发前景
Android安卓应用开发是当前比较热门的技术领域之一,也是IT行业中的一项快速发展的技术。随着智能手机等移动设备的普及和网络的快速发展,越来越多的人开始关注Android应用开发,并开始学习和了解Android开发的相关知识。一、Android应用开发的
2023-05-23
手动安卓app开发
在 Android 应用程序中,App 的核心代码是由 Java 语言编写的,与此同时,App 还需要一个 XML 文件来定义其界面和布局。为了简化这些步骤, Android 在其软件开发工具中提供了一套预定义模板和框架以帮助开发者快速创建 App。下面是
2023-04-28
安卓app开发难点
在本文中,我们将探讨安卓应用开发的难点,包括其中的一些原理和详细介绍。安卓应用开发涉及到多个方面,包括构建用户界面、数据管理、网络通信、安全性、性能优化等。让我们深入了解一下这些难点。1. 开发环境搭建搭建Android开发环境需要对Android Stu
2023-04-28
安卓app应用开发方案
安卓APP应用开发是一项涵盖多种技能的复杂工作,它涉及到软件开发、界面设计、用户体验设计和软件测试等方面的知识。下面是常见的安卓APP应用开发方案:1. 确定应用类型和功能 在开发安卓APP应用之前,必须确定您的应用类型和功能。例如,您可以开发一款社交媒体
2023-04-28
©2015-2023 安卓益APP Anzhuoe.com 蜀ICP备17007734号-1