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


相关知识:
安卓9开发者选项介绍
安卓9开发者选项是安卓系统中一项非常重要的功能,它可以让用户开启更多的高级功能,并可以进行更灵活地调试和开发。在本篇文章中,我们将会对安卓9开发者选项进行详细的介绍和原理解析。首先,让我们来了解一下如何开启安卓9开发者选项。打开系统设置,找到关于手机选项,
2023-05-23
安卓7
在Android设备中,开发者选项可以让用户更深入地定制和优化设备。开发者选项包含了很多高级选项,比如USB调试模式、GPU呈现模式、禁用掉屏幕自动旋转等等,但是有些设备为了安全起见,在开启开发者选项时需要输入密码,限制非授权人员对设备进行调试操作。本文将
2023-05-23
安卓11蓝牙开发需要的权限是什么
在安卓系统中,蓝牙开发需要进行权限的申请才能正常运行。其中具体需要哪些权限呢?让我们一起来了解一下。首先,我们需要在 AndroidManifest.xml 文件中声明使用蓝牙相关的权限,如下所示:```xml```其中,BLUETOOTH 权限是必须的,
2023-05-23
安卓10怎么改开发者选项
开发者选项是安卓系统中一个非常重要的选项,它提供了一些高级选项和设置,可以帮助开发者更好地调试和测试应用程序。在Android 10系统中,改变开发者选项设置的方法略有不同,下面我们将详细介绍如何在Android 10中改变开发者选项。首先,我们需要打开“
2023-05-23
安徽安卓app开发工具
安徽安卓app开发工具是一款面向安卓移动设备开发的专业软件,提供了一系列的开发环境和工具,让开发者可以轻松地创建功能强大的移动应用程序。本文将从原理和详细介绍两个方面对安徽安卓app开发工具进行解析。一、原理安徽安卓app开发工具是建立在安卓开发软件基础上
2023-05-23
vscode 可以开发安卓吗
VS Code 是一款轻量级文本编辑器,可以支持多种编程语言和框架,在 Web 前端和后端开发中广受欢迎。虽然 VS Code 本身不能开发安卓应用,但是可以通过一些插件和扩展来实现。首先,需要安装 Java Development Kit(JDK)和 A
2023-05-23
python开发安卓应用的书
Python是一种简单易学的编程语言,拥有广泛的应用场景,包括 Web 开发、数据分析、科学计算、人工智能等。但是,在移动应用开发领域,Python并不是最常用的语言。原因在于,Android系统使用的是Java语言和Kotlin语言,而iOS系统使用的是
2023-05-23
net5安卓开发
.NET 5 是一个跨平台的开发框架,在 .NET 5 中,我们可以使用 C# 或 F# 开发跨平台的应用程序,包括 Web 应用程序、移动应用程序、桌面应用程序等。单独使用 .NET 5 无法进行 Android 开发,需要结合 Xamarin.Form
2023-05-23
arcore安卓开发
ARCore是谷歌推出的一个基于Android平台的增强现实框架,其主要目的是让Android设备具有AR功能。ARCore结合了设备传感器和相机信息,通过准确的空间感知和环境分析,能够让开发者在自己的应用中轻松实现丰富的交互和AR体验。下面我将详细介绍A
2023-05-23
西昌安卓的app开发
安卓 app 开发是指用于自定义 Android 设备功能和用户界面的应用程序开发。开发这类应用程序的人员被称为安卓开发者,他们使用安卓提供的强大 API 接口,为各类终端用户提供便利服务。原理:安卓是基于 Linux 内核的开源操作系统,采用了虚拟机技术
2023-04-28
安卓手机app如何开发
Android是目前世界上最流行的移动操作系统之一,拥有庞大的用户基础和丰富的应用市场。如果你想将自己的想法转化为一款安卓应用,那么你需要了解一些安卓应用开发的基础知识。安卓应用开发涉及到许多领域和技术,包括Java编程语言,Android SDK和And
2023-04-28
安卓开发展示自己app
展示自己的安卓应用程序可以通过多种方式进行,以下是一些常用的方式:1. 在Google Play或其他应用商店上发布:将应用程序打包成.apk文件并上传到Google Play或其他应用商店上进行发布。用户可以在这些应用商店中搜索并下载应用程序。在发布应用
2023-04-28
©2015-2023 安卓益APP Anzhuoe.com 蜀ICP备17007734号-1