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


相关知识:
安卓9miui开发版
安卓9 miui开发版是基于安卓9系统的小米手机系统,小米公司自主研发并推出的miui开发版,其主要特点是运用了小米独特的UI设计与界面效果,丰富的应用商店和实用的功能设置,更加简约而又美观的操作界面及其顺畅流畅的用户体验等等。下面我们来详细介绍一下安卓9
2023-05-23
安卓9 芯片 开发板
安卓9芯片开发板是一种可编程的硬件平台,用于开发运行Android 9的设备和应用程序。它通常包含处理器、内存、存储、网络连接和各种输入输出接口。在这篇文章中,我们将介绍安卓9芯片开发板的原理和详细信息。一、安卓9芯片开发板的原理安卓9芯片开发板采用现代处
2023-05-23
安卓7开发人员选项设置
Android开发人员选项是用于Android设备调试和优化的一组高级设置。这些选项可以帮助开发人员诊断和解决应用程序问题,还可以提高应用程序的性能。但是,这些选项通常是默认隐藏(在设备设置中)。本文将详细介绍如何打开Android 7(Nougat)中的
2023-05-23
安卓11开发软件后台运行
随着移动设备技术的不断发展,在现代社会中,越来越多的人们开始倾向于使用智能手机来解决问题。而在实际应用中,有时我们需要让某个特定的应用程序在后台运行,以完成某些特定的功能。在Android这个操作系统中,随着版本的不断升级,我们也需要对后台运行的相关知识有
2023-05-23
安浪安卓开发
安浪是一款基于Android操作系统的开源平台,旨在帮助开发者更快速、更高效地进行Android应用程序的开发。它提供了丰富的功能库和工具,以简化Android开发的流程。在本文中,我们将详细介绍安浪的原理和功能。一、安浪的原理安浪的设计思想主要是“模块化
2023-05-23
java与安卓开发学习指南
Java是一门以面向对象编程为基础的高级程序语言,安卓开发则是利用Java语言编写的应用程序的开发。Java语言与安卓开发是由Oracle公司持有的。Java学习指南1. Java语言特点Java语言有着很多特点,其中一些重要的特点如下:一. 简单性: J
2023-05-23
google 安卓开发
安卓(Android)是由Google开发的基于Linux的移动操作系统,它为移动设备提供了一个广泛的应用程序生态系统和开发工具集。安卓操作系统的核心是Linux内核,负责硬件驱动、内存管理、系统调度等基本功能。上层则是一些库和软件框架,提供了各种功能接口
2023-05-23
c sharp安卓开发
C#是一门由微软开发的面向对象编程语言,支持多种编程范式,包括结构化、面向对象和函数式编程。同时,C#有许多应用领域,包括移动应用开发,尤其是安卓应用开发。本篇文章,将会详细介绍C#在安卓开发中的应用原理和开发流程。一、C#与安卓应用开发C#在移动应用开发
2023-05-23
开发安卓平板app
开发安卓平板app的基本流程如下:1. 确认需求和目标用户在开始开发之前,首先需要明确需求和目标用户。需要考虑的问题包括:平板设备的特性、目标用户的需求和使用场景、竞品和市场情况等。2. 设计软件架构根据需求和目标用户,设计软件架构。这包括确定平板分辨率和
2023-04-28
安卓手机制作打包app
制作打包安卓app的基本原理就是通过Java语言编写程序,使用Android开发工具包(ADT)进行开发和调试,最终将程序打包成.apk文件并安装在Android手机上。下面是详细的制作打包安卓app的步骤:Step 1: 安装Java JDKJava J
2023-04-28
安卓app开发语言及工具
安卓App开发语言主要有Java、Kotlin和C++等,其中Java是安卓平台主流语言,Kotlin则是逐渐被官方推荐和采纳的语言。Java是一种面向对象的编程语言,它是Android应用程序开发的核心语言。Java语言广泛应用于企业级应用程序开发等领域
2023-04-28
基于位置共享安卓app开发
基于位置共享的安卓app开发一般需要使用到GPS、地理位置信息、Socket等技术。下面是大致的实现原理和步骤:1.获取地理位置信息需要在代码中获取到当前设备的地理位置信息,可以通过Android SDK中的LocationManager类进行实现,通过调
2023-04-28
©2015-2023 安卓益APP Anzhuoe.com 蜀ICP备17007734号-1