安卓11开发模式怎么关闭

Android 11 引入了新的应用开发模式——Scoped Storage。Scoped Storage 是一种更加安全的文件管理方式,可以限制应用的文件共享和访问权限,防止了恶意应用窃取用户的隐私信息。不过,有时候 Scoped Storage 可能会对应用造成不必要的麻烦,比如一些旧版应用可能无法正常工作。如果你想关闭 Scoped Storage,可以按照以下步骤进行操作。

Scoped Storage 的原理

在 Android 11 中,应用的所有外部存储访问都必须使用 Scoped Storage,也就是说,应用无法直接访问外部存储的根目录和其他应用的文件。相反,Android 11 引入了一组新的 API,允许应用通过 MediaStore、Storage Access Framework(SAF)和应用专属目录来访问外部存储。这些 API 具有更加严格的权限管理机制,并且可以保护用户的隐私信息。

关闭 Scoped Storage

如果你想关闭 Scoped Storage,可以按照以下步骤进行操作:

Step 1:申请权限

首先,你需要在 AndroidManifest.xml 文件中申请 WRITE_EXTERNAL_STORAGE 权限。因为 Android 11 中的 Scoped Storage 只允许应用访问自己专属的目录,如果你想访问外部存储的其他文件,需要申请这个权限。

```

```

Step 2:配置应用专属目录

在 Android 11 中,所有应用都有一个专属的目录,可以访问这个目录下的文件,无需使用 Scoped Storage。你可以通过 Context.getExternalFilesDir() 方法获取这个目录的路径,并在其中创建自己的文件。

```

val file = File(getExternalFilesDir(null), "test.txt")

file.writeText("Hello, World!")

```

注意,这里的 getExternalFilesDir() 方法中传入的参数只是为了获取不同类型文件的目录,如果你只需要一个通用的目录,可以传入 null。

Step 3:标记文件共享

在 Android 11 中,所有应用的文件默认都是私有的,而且无法与其他应用共享。如果你想让自己的文件被其他应用访问,需要使用 MediaStore API 或 SAF(Storage Access Framework)将文件标记为共享。

使用 MediaStore API 将文件标记为共享:

```

val values = ContentValues().apply {

put(MediaStore.Audio.Media.DISPLAY_NAME, "test.mp3")

put(MediaStore.Audio.Media.MIME_TYPE, "audio/mpeg")

put(MediaStore.Audio.Media.IS_PENDING, 1)

}

val item = contentResolver.insert(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, values)

item?.let { uri ->

try {

contentResolver.openFileDescriptor(uri, "w", null).use { parcelFileDescriptor ->

if (parcelFileDescriptor != null) {

FileOutputStream(parcelFileDescriptor.fileDescriptor).use { output ->

output.write(byteArrayOf(0x00))

output.flush()

}

}

}

values.clear()

values.put(MediaStore.Audio.Media.IS_PENDING, 0)

contentResolver.update(uri, values, null, null)

} catch (e: Exception) {

e.printStackTrace()

contentResolver.delete(uri, null, null)

}

}

```

使用 SAF 将文件标记为共享:

```

val intent = Intent(Intent.ACTION_OPEN_DOCUMENT).apply {

type = "image/*"

addCategory(Intent.CATEGORY_OPENABLE)

flags = Intent.FLAG_GRANT_READ_URI_PERMISSION or Intent.FLAG_GRANT_WRITE_URI_PERMISSION

putExtra(Intent.EXTRA_TITLE, "test.jpg")

}

startActivityForResult(intent, 1001)

override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {

super.onActivityResult(requestCode, resultCode, data)

if (resultCode == Activity.RESULT_OK && requestCode == 1001) {

data?.data?.also { uri ->

try {

contentResolver.takePersistableUriPermission(uri, Intent.FLAG_GRANT_READ_URI_PERMISSION or Intent.FLAG_GRANT_WRITE_URI_PERMISSION)

} catch (e: Exception) {

e.printStackTrace()

}

}

}

}

```

通过上述操作,你可以关闭 Android 11 的 Scoped Storage,让应用在外部存储中自由存储和读取文件。不过,需要注意的是,关闭 Scoped Storage 会带来一些安全风险,因此谨慎操作,确保应用的数据不会被泄露。


相关知识:
安卓12开发者怎么打开
在Android 12中,开发者选项包含了许多新功能,例如全新的API、用户界面和安全相关的改进,因此开发者需要打开这个选项才能访问这些新功能。打开开发者选项的方法:1.进入“设置”应用程序,向下滚动到“关于设备”选项,并点击它。2.在“关于设备”选项中,
2023-05-23
安卓10 app开发
Android 10是由谷歌开发的移动操作系统,是Android操作系统的第十个主要版本。它于2019年9月发布,带来了许多新功能和改进,包括更好的隐私保护、更快的速度、新的手势导航和更多。这篇文章将介绍如何在Android 10上开发应用程序。Andro
2023-05-23
安卓 apk开发
Android apk是指安装在Android操作系统上的应用程序,是Android系统的应用程序的一种安装包形式。本文将从Android apk的概念、工作原理、开发流程和发布流程四个方面来详细介绍。一、概念Android apk即Android Pac
2023-05-23
vs安卓开发工具
VS安卓开发工具是一款由微软公司推出的适用于安卓应用程序开发的综合性工具,其提供了轻量、快速、直观的开发环境和便捷的构建、调试和部署工具。原理:VS安卓开发工具采用了跨平台开发框架Xamarin,通过使用C#语言和.NET框架,以及跨平台合并工具集Xama
2023-05-23
deepin开发安卓
Deepin是一款基于Linux的开源操作系统,也是一款十分注重美观和易用性的操作系统,可以说是Linux的一个精品发行版。而安卓则是目前全球最为流行的手机操作系统,也是建立在Linux内核之上的。那么,能否在Deepin系统中进行安卓开发呢?答案是肯定的
2023-05-23
自己制作安卓app
自己制作安卓App可以分为以下几个步骤:1. 确定App的功能和界面设计在制作App之前,你需要明确该App的定位,包括目标用户,功能模块,以及程序界面的设计,并使用草图或原型工具进行模拟真实App的使用体验。2. 学习和掌握编程语言比如Java、Kotl
2023-04-28
安卓tv app开发源码
安卓TV应用程序开发通常涉及到视频播放、应用商店、EPG (电子节目指南)、直播电视节目等功能。下面将对这些主要功能进行详细介绍。1. 视频播放在安卓TV应用程序中,视频播放是一个主要的功能。可以使用Android Media Player或ExoPlay
2023-04-28
安卓app开发需要多少行代码
安卓App开发所需要的代码行数,主要取决于应用的规模和复杂程度。通常,一个简单的App可能只需要几千行代码,而一个复杂的应用则可能需要几百万行甚至更多的代码。在安卓App开发中,Java语言是主要的开发语言。开发者可以使用Android SDK提供的API
2023-04-28
安卓app开发问题有哪些
安卓应用开发涉及很多知识点和问题。以下是一些主要的原理和概念,了解这些将有助于你更好地理解安卓应用开发过程。1. 安卓开发环境和工具 开发者需要熟悉安卓开发环境(Android Studio, IntelliJ IDEA等),使用官方的Android
2023-04-28
安卓app傻瓜式开发
安卓APP的傻瓜式开发可以指的是利用一些第三方开发工具来进行开发,这些工具可以帮助新手快速地构建APP原型和界面布局等,同时提供了丰富的界面元素和功能组件,减少了码代码的难度。常用的安卓APP傻瓜式开发工具包括:1. Android Studio:这是官方
2023-04-28
如何制作安卓app软件
制作安卓App可以通过Java和Kotlin进行编码,使用Android Studio进行开发,以下是详细步骤:1. 开发环境配置安装并配置JDK、Android Studio和安装的SDK。2. 创建项目在Android Studio中创建一个新的项目,
2023-04-28
app制作安卓方案
制作安卓应用程序有很多不同的方案,以下是其中比较常见的三种方案:1. 使用Android Studio开发:Android Studio是谷歌官方推出的IDE开发工具,提供了全面的开发环境,是目前最常用的安卓应用开发工具。在Android Studio中,
2023-04-28
©2015-2023 安卓益APP Anzhuoe.com 蜀ICP备17007734号-1