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开发者选项改完又恢复
安卓是一种开放源代码的移动操作系统,其发展已经持续了很多年,而现在的安卓开发者选项已经非常强大和灵活,可以让开发者进行各种高级设置和调试操作,以便更好地开发、测试和调试安卓应用程序。然而,由于安卓开发者选项牵涉到许多高级设置和调试选项,因此,有时候可能会因
2023-05-23
realme安卓11开发者模式怎么关
在Android 11上开启开发者模式通常是为了让用户能够更好地调试设备并进行一些高级操作。但在某些情况下,可能需要关闭开发者模式。下面我们将详细介绍如何关闭realme手机的Android 11开发者模式。首先,我们需要了解一下开发者模式的具体作用以及开
2023-05-23
qt安卓开发通知栏
Android通知栏是一种非常实用的功能,同时也是用户在使用Android应用时最为重视的功能之一。Qt作为一种跨平台的开发框架,也可以利用Qt跨平台开发Android应用,同时使用Qt可以方便地实现Android通知栏的功能。本文将为大家详细介绍Qt实现
2023-05-23
miui14开发版内测会清除数据吗安卓
MIUI 14开发版内测是小米公司在发布MIUI操作系统的过程中,为了测试新功能和修复问题而提供的一种测试版。安装MIUI 14开发版内测前,需要清除设备上的所有数据,包括应用程序、数据和设置,以便进行干净的安装。此过程我们通常称为“清除数据”或“恢复出厂
2023-05-23
c4droid开发安卓
C4droid是一款Android上功能强大的C/C++代码编辑器,它使用GCC编译器提供了完整的C/C++编译环境,同时还支持OpenGL ES渲染器。在使用过程中,不仅可以编辑和编译C/C++代码,还能够使用各种内置的库和函数。下面我将对C4droid
2023-05-23
安卓app插件开发
标题:安卓App插件开发详细介绍摘要:在本文中,我们将介绍Android插件化开发的原理和详细实现方法。插件式开发是Android应用开发的一种模式,主要用于模块解耦、提高开发效率和降低维护成本。一、什么是插件化开发?插件化开发是一种应用程序开发模式,它允
2023-04-28
安卓app推广分享开发
Android App 推广分享开发:原理与详细介绍随着智能手机的普及, 安卓App 开发已成为越来越多企业和开发者关注的方向。其中,一个成功的安卓App 不仅需要好用的功能,还需要有有效的推广渠道。分享功能是实现推广的一种常见方式。在这篇文章中,我们将详
2023-04-28
安卓app打包制作
Android App 打包制作的原理是将开发者所编写的应用源代码、图片、音频等资源文件打成一个标准的安卓应用包APK(Android Package Kit),并将其发布到各个安卓应用市场,供用户下载与安装。下面介绍一下具体的制作流程:1. 确认项目环境
2023-04-28
安卓app开发设计
安卓App开发设计教程本教程旨在为初学者提供一个简单易懂的安卓App开发指南。安卓作为当今市场占有率最高的智能手机操作系统之一,应用程序开发在众多行业具有所需求。下面我们将从原理和详细概念介绍安卓App的开发与设计流程。一、安卓开发基础知识1. 安卓操作系
2023-04-28
安卓app开发系统定制
安卓系统是开源的,开发者可以针对不同应用场景进行定制,例如针对特定的硬件设备、企业内部使用等。安卓系统定制通常包括以下步骤:1. 选择合适的Android开发板:开发板通常集成了CPU、内存、网络、WIFI、蓝牙等各种硬件,选择合适的开发板可以快速构建原型
2023-04-28
安卓app制作app
安卓App(Android App)是一种在安卓操作系统上运行的移动应用程序。要制作安卓App,您需要了解以下三个方面:1.开发环境:Android Studio是安卓开发的官方IDE(集成开发环境),它提供了丰富的开发工具和插件,帮助开发者进行开发和测试
2023-04-28
如何用安卓studio制作安卓app
Android Studio是一个官方提供的开发Android应用的集成开发环境(IDE),它集成了Android SDK、Gradle构建工具、代码编辑器等主要工具,可以帮助开发者快速、高效地开发出高质量的Android应用程序。以下是基本的步骤:1.
2023-04-28
©2015-2023 安卓益APP Anzhuoe.com 蜀ICP备17007734号-1