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


相关知识:
安卓5
开发者选项是安卓系统提供的一组高级功能和调试选项,一般情况下,我们可以通过系统设置来开启开发者选项。但在安卓5.1及以上版本中,为了增加开发者选项的安全性,系统默认隐藏了开发者选项,需要通过输入密码来开启。那么,这个密码是怎么来的呢?首先,我们需要了解一下
2023-05-23
安卓11 开发者选项
Android 11 是谷歌最新推出的操作系统,它为开发人员带来了许多新的功能。其中之一就是开发者选项,这是一个专为开发人员设计的设置菜单。它提供了访问和控制 Android 设备上各种高级设置选项的途径,可以帮助我们更好地调试和优化我们的应用程序。在本文
2023-05-23
netbeans安卓开发环境
NetBeans是一种广泛使用的开发环境,特别适合Java开发。作为一种IDE(Integrated Development Environment),它提供了一个集成环境,用于编写、构建、测试和调试软件。在Java开发者中广受欢迎的原因之一是它可以非常容
2023-05-23
health安卓开发者
在现代医疗行业中,移动应用程序的重要性越来越高。这些应用程序可以帮助医生和患者更好地管理健康,提高医疗保健的质量。安卓平台已经成为一个主要的移动应用开发平台之一,医疗和健康领域也不例外。Health安卓应用程序的开发涉及多方面的技能和知识。在下面的文章中,
2023-05-23
golang 安卓 开发工具
Go语言(或称Golang)是一种新兴的编程语言,具有高效、简洁和易于阅读等特点,在Web开发、系统编程、网络编程和云计算等领域广泛应用。而安卓开发,也是移动互联网领域的热门技术,一直以来都受到开发者们的追捧。如果将这两种技术结合在一起,也就是Golang
2023-05-23
eclipse开发安卓app教程
Eclipse是一个开源的集成开发环境(IDE),它有很多功能,其中最常用的是用于Java程序的开发和Android程序的开发。在本篇文章中,我将介绍Eclipse是如何用于开发Android程序的,以及一些基本的开发知识。首先,如果你要使用Eclipse
2023-05-23
用vs开发安卓app
用vs开发安卓app的原理和步骤如下:1. 安装Java和Android SDK在用vs开发安卓app之前,需要安装Java和Android SDK。Java是一种运行在多个平台上的编程语言,而Android SDK则是安卓开发工具包,包含了所有必要的文件
2023-04-28
江苏安卓系统app定制开发电话多少
安卓系统app定制开发的电话咨询费用一般是根据客户的需求而定的,因此无法给出具体的价格。一般而言,需要提供以下信息才能得到一个准确的报价:1. 应用程序的类型和功能2. 应用程序的复杂性和规模3. 预计的开发时间和人力资源4. 需要集成的第三方组件或API
2023-04-28
安卓开发读取其他app信息
标题:安卓开发:读取其他App的信息及实现原理详解在安卓开发中,有时我们需要获取或读取其他已安装应用信息。本教程将为你详细介绍安卓开发如何实现这一功能,以及相关原理。一、读取其他App信息的原理在Android系统中,每个已安装的应用都会有一个Androi
2023-04-28
基于安卓的app开发实战游戏
在这篇文章中,我们将探讨基于安卓的App开发实战游戏,主要包括游戏开发的原理、基本概念及关键技术。我们以一款简单的2D游戏为例,介绍了如何从零开始开发一个游戏应用程序。一、游戏开发原理1. 游戏引擎:游戏开发的核心是游戏引擎,它提供了用于创建和运行游戏的基
2023-04-28
利用安卓开发作业批改app
在这篇文章中,我们将介绍如何利用安卓开发一个作业批改的应用。这个应用的主要目的是帮助老师更高效地批改作业,并让学生能够更快地获得反馈。一、应用需求分析作业批改应用需要实现以下功能:1. 用户注册与登录:老师和学生都需要有自己的账号来登录。2. 创建并管理课
2023-04-28
东莞安卓商城app开发定制外包
东莞安卓商城App开发定制外包是一种将App开发项目交给专业的外部团队完成的模式,具体包括以下几个方面:一、自定义需求分析在项目初期,签订合同之前,客户需提供对应的App业务需求。开发团队会根据需求做出初步的需求分析报告,包括功能列表、界面设计草稿等。在这
2023-04-28
©2015-2023 安卓益APP Anzhuoe.com 蜀ICP备17007734号-1