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


相关知识:
安卓13开发者版有什么功能
安卓13开发者版是即将发布的安卓操作系统的开发者版。它主要为开发者提供了一些最新的功能,帮助他们更好地开发应用程序。本文将介绍安卓13开发者版的一些主要功能。1. 后台保活优化安卓13开发者版将通过对应用程序管理进行改进,提高应用程序的后台保活能力。在以前
2023-05-23
安卓10软件自动更新开发
在安卓10中,软件自动更新是一个非常有用的功能。对于用户来说,不需要手动检查更新,也可以获得最新版本的功能和修复了漏洞的软件。对于开发者来说,软件自动更新可以帮助程序保持最新的状态,保护数据安全。Android 10中引入了一项重要的新功能 - 自动更新,
2023-05-23
wxwidgets开发安卓app
wxWidgets是一种跨平台的C++ GUI库,可以用于开发各种应用程序,包括桌面应用程序、移动应用程序和Web应用程序等。wxWidgets提供了一种快速、简单且高效的方式,让开发者能够在不同的操作系统和平台上创建统一的用户界面。本文将介绍如何使用wx
2023-05-23
uniapp开发安卓有缺点吗
Uniapp是一个基于Vue.js框架的跨平台开发框架,可以同时开发出具备安卓和iOS系统适配的应用软件。使用Uniapp开发安卓应用虽然具有跨平台的优势,但也存在缺点,下面将从原理和详细介绍两个方面阐述。一、原理Uniapp的原理是通过H5技术将应用框架
2023-05-23
pyqt5支持安卓开发吗
PyQt5是一个Python编写的、支持跨平台的GUI应用程序框架。它是Qt库的Python绑定版本,是PyQt的最新一代产品。PyQt库为Python开发人员提供了可以利用QtCore, QtGui, QtSql, QtXml等Qt模块的工具集,并为开发
2023-05-23
java编程开发工具安卓
Java编程开发工具安卓是一款基于Java语言的开放式操作系统。它通过内置的Java虚拟机(Java Virtual Machine, JVM)提供程序运行环境,并提供了一个类库,开发者可以利用这个类库来进行开发和测试。Android Studio是一种官
2023-05-23
java 怎么开发安卓应用
Java是目前使用最为广泛的编程语言之一,而安卓开发则是Java应用方向之一。下面就为大家介绍一下Java开发安卓应用的原理和详细步骤。一、开发环境准备要进行Java开发安卓应用,首先需要下载并安装JDK(Java Development Kit)版本1.
2023-05-23
eclipse安卓开发怎么连接手机
在进行安卓应用程序的开发中,通常会使用eclipse这个开发工具,用来开发其应用程序。而在进行开发时,必要时需要把程序安装到手机上进行测试。此时就需要连接手机到电脑上,使得开发工具能够识别到手机。下面是如何使用eclipse连接手机的具体步骤介绍。1.准备
2023-05-23
打包app安卓下载链接生成
打包app安卓下载链接生成是指将一个已经开发好的安卓应用程序,通过特定的方式打包成一个.apk文件,并生成一个下载链接,方便用户下载安装应用程序。打包安卓应用程序可以使用 Android Studio,它是谷歌官方开发工具集成开发环境 (IDE),通过 A
2023-04-28
安卓应用app开发
安卓应用开发是指使用特定的开发工具和技术,基于Android系统创建各种应用程序的过程。安卓(Android)是由谷歌(Google)开发的一种操作系统,主要应用于移动设备,如智能手机和平板电脑。以下是关于Android应用开发的基本原理和详细介绍:1.
2023-04-28
安卓app开发用什么
安卓App开发可以使用多种不同的工具和语言,下面简单介绍一下其中几种。1. Java语言和Android SDKJava是安卓App开发的主流语言之一,Android SDK则提供了一系列用于开发安卓应用的API、库、工具等。使用Java和Android
2023-04-28
labview开发安卓app
要开发LabVIEW安卓app,需要使用NI LabVIEW软件以及NI LabVIEW Mobile Module插件。以下是开发安卓app的步骤:1.首先,需要在NI官网上下载NI LabVIEW软件以及NI LabVIEW Mobile Module
2023-04-28
©2015-2023 安卓益APP Anzhuoe.com 蜀ICP备17007734号-1