scoped-storage相关内容

存储访问框架-权限被拒绝问题,即使授予权限也是如此

我正在实施存储访问框架以授予Android文件夹访问权限。我已经更新了targetSDKVersion=30,在Android 11上我遇到了存储权限问题。我希望获得访问Android/media/com.whatsapp/WhatsApp/Media中文件的存储权限。 为了使存储权限起作用,我实现了存储访问框架,以获得Android/media/com.whatsapp/WhatsApp/ ..

Android - 使用 Google Scoped Storage API 访问本机 C/C++ 代码中的文件

我需要在原生 C/C++ 代码中的 Android 应用程序中按文件名打开文件.本机代码是我不想修改的第 3 方库,但它们通常需要文件名作为读取/写入文件的参数.使用 Google 的“范围存储"API 并在 Android 10 或更高版本中禁用对文件的本机访问,这是一个真正的问题. 一个众所周知的解决方案是获取文件描述符并使用“proc/self/fd/FD_NUMER"技巧,例如: ..
发布时间:2022-01-25 21:33:17 移动开发

如何在不使用 File 或 file-path 的情况下获取文件系统(不仅仅是已安装的)中 APK 文件的信息?

背景 我的应用(此处) 可以在整个文件系统(不仅仅是已安装的应用程序)中搜索 APK 文件,显示每个文件的信息,允许删除、共享、安装... 作为 Android Q 范围内存储功能的一部分,谷歌宣布 SAF(存储访问框架)将取代正常的存储权限.这意味着即使您尝试使用存储权限,它也只会授予访问特定类型的文件的权限,以便使用或完全沙盒化的 File 和 file-path(写于 此处). ..

当我只能处理文件或文件路径时,如何处理SAF?

背景 直到Android Q,如果我们想获取有关APK文件的信息,可以使用 WRITE_EXTERNAL_STORAGE 和文件路径上的 PackageManager.getPackageArchiveInfo 函数. 存在类似的情况,例如使用 ZipFile类> 压缩文件,可能还有无数的框架API和第三方库. 问题 Google最近宣布了对Android Q的大量限制. ..

Android-使用Google Scoped Storage API以本机C/C ++代码访问文件

我需要在本机C/C ++代码中的Android应用中按文件名打开文件.本机代码是我不希望修改的第三方库,但是它们通常需要文件名作为读取/写入文件的参数.有了Google的“范围存储" API并在Android 10或更高版本中禁用了对文件的本地访问,这是一个真正的问题. 一种众所周知的解决方案是获取文件描述符并使用"proc/self/fd/FD_NUMER"技巧,例如: ParcelF ..
发布时间:2021-04-05 20:55:33 移动开发

以编程方式测试是否在Android 10+中禁用了旧版外部存储访问

是否有一个简单的API调用可以告诉我在Android 10或更高版本上运行的应用是否必须使用范围存储访问权限,即是否禁用了“旧版外部存储"(又称为“旧版外部存储")?请注意,即使应用程序位于AndroidManifest.xml中,该节也声明为: android:requestLegacyExternalStorage ="true" 由于将来Google政策的更改,文件访问仍可能会被拒绝 ..
发布时间:2021-04-05 20:19:49 移动开发

Android Q(10)要求获得访问所有存储的权限.范围存储

在需要访问存储的Android 10应用中,需要征求访问特定路径的权限.但是,诸如文件浏览器之类的应用程序可以请求访问根存储的权限,并获得读取/写入所有存储的权限.那就是我想要做的. 根据Android,我们必须为此使用 ACTION_OPEN_DOCUMENT_TREE .我的问题是,一切似乎都正确,但是未将权限授予该应用. private void askAndroid10Perm( ..
发布时间:2021-04-03 20:21:44 移动开发

写入权限不起作用-范围存储Android SDK 30(又名Android 11)

还有其他人发现范围存储几乎不可能开始工作吗?大声笑. 我一直在尝试了解如何允许用户向我的应用授予对应用文件夹以外的文本文件的写权限. (比方说,允许用户在其“文档"文件夹中编辑文件的文本).我已经设置了MANAGE_EXTERNAL_STORAGE权限,并且可以确认该应用程序具有该权限.但是还是每次我尝试 val fileDescriptor = context.contentReso ..
发布时间:2021-02-15 19:40:43 移动开发

将文件写入Android Q中的可公开访问的文档文件夹-范围存储

背景 迁移到Android Q后,我再也找不到合适的方法来获取对documents文件夹(/storage/emulated/0/Documents)的写访问权 在任何人提到范围存储的其他问题之前,我已经阅读了其中的很多问题,到目前为止,从我所看到的所有解决方案中,所有解决方案都使用应用程序特定目录或仅访问媒体目录(而非文档文件夹)访问). 根据我对Android Q的了解,我可 ..
发布时间:2020-08-30 04:59:23 移动开发

如何在不使用文件或文件路径的情况下获取文件系统(不仅仅是已安装的文件)中APK文件的信息?

背景 我的应用程序( 此处 )可以在整个文件系统(不仅是已安装的应用程序)中搜索APK文件,显示有关每个文件的信息,从而可以删除,共享,安装... 作为Android Q范围存储功能的一部分,Google宣布SAF(存储访问框架)将取代常规存储权限.这意味着,即使您尝试使用存储权限,也只会授予访问特定类型的文件的权限,以使文件和文件路径可以使用或完全沙盒化(写为这意味着很多框架将需要依 ..

Android Q:从图库中获取图像并进行处理

我知道这似乎是一个非常基本的问题,但这是专门针对Android Q的. 我只想从Gallery获取图像并将其压缩并发送到服务器.但是由于Android Q的范围存储,它比我想象的要难.我将首先解释我对代码的处理方式: 首先,我发出选择图像的意图. fun openGallery(fragment: Fragment){ val intent = Intent(Intent ..

如何在范围存储中保存pdf?

在引入范围存储之前,我曾使用Download Manager在我的应用程序中下载pdf并从getExternalStorageDirectory获取pdf,但是由于范围存储,我已不再使用getExternalStorageDirectory,因为它已被弃用.我决定不使用Download Manager,而是下载公共​​目录中的文件,而改用pdf文件下载. 我知道我可以在Android Manife ..
发布时间:2020-06-15 18:32:22 移动开发