当前位置: 首页 > 知识库问答 >
问题:

如何在AndroidQ中请求外部文件访问权限?

有骏奇
2023-03-14

听说Android Q推出了一个名为“范围存储”的新安全功能,限制外部存储中的访问文件。我的问题是我必须从应用程序中保存一个文本文档到用户指定的位置。这是否需要任何类型的权限,而不是Q设备中的read_external_storagewrite_external_storage

共有1个答案

徐栋
2023-03-14

我的问题是我必须从应用程序中保存一个文本文档到用户指定的位置

使用action_create_document允许用户指定位置。可以使用use aContentResolver及其OpenOutputStream()方法为从action_create_document获取的URI获取OutputStream。然后可以将文本写入outputStream

这是否需要任何类型的权限,而不是Q设备中的READ_EXTERNAL_STORAGE和WRITE_EXTERNAL_STORAGE?

action_create_document不需要任何权限,可以恢复到Android4.4。

或者,您可以将文件写入Context上的GetExternalFilesDir()标识的目录。这部分外部存储在Android Q上对用户是可见的,不需要额外的权限。

或者,如果您将targetsdkversion保持在28或更低,您可以使用write_external_storage并在您想要的地方进行编写,就像在Android 9.0+上所做的那样。但是,请记住,当您将targetsdkversion提高到28以上(例如,以符合2020的Play Store要求)时,这种方法将停止在Android R中使用。因此,使用action_create_documentgetExternalFilesDir()是更好的长期解决方案。

 类似资料:
  • 我的应用程序的目标SdkVersion=29 我拍了一张照片,它保存在路径: src=/storage/simulated/0/DCIM/Camera/IMG_20201120_091943。jpg 然后我想使用FileInputStream/FileOutputStream将此图像复制到内部存储。虽然,我的应用程序有WRITE/READ存储权限,但当我编码 我收到了一个FileNotFoundE

  • 我想做一个像相册一样的lib改编成Android Q 由于范围存储,不推荐使用; 我们不能直接通过这样的路径读取文件 没有URI之类的值,因此我无法通过ContentProvider获取图片。 我们可以通过这种方式只打开一个图片(下面的代码),并且在回调中接收到一个URI; 但是我想访问所有的图片,那么,我如何扫描所有的图片在Android Q?

  • 我有一个应用程序,将选择图像到画廊,并显示它的测试使用ImageView。我的问题是它不能在Android M上工作。我可以选择图像,但不能在我的测试中显示。他们说我需要得到允许才能在Android M上访问图像,但不知道怎么做。请帮帮忙。

  • 我试图找到所有的mp3文件在存储,但我的应用程序崩溃,我使用logcat看看为什么和问题的权限访问外部存储,但我已经把权限在清单,我不知道为什么不断崩溃。第一个错误: 03-06 14:55:24.553:E/dex2OAT(2796):创建oat文件失败:/data/dalvik-cache/x86/data@app@felipe.cursoandroid.com.musicbox-2@spli

  • 在Xcode8/Swift3.0中注册推送通知? 是否有方法在appdelegate和func应用程序(_application:UIApplication,didFinishLaunchingWithOptions LaunchOptions:[NSObject:AnyObject]?)之外请求requestAuthorization(选项:[.Badge,.Alert,.Sound])->布尔

  • 问题内容: 我对让Docker能够访问外部文件感兴趣,但是我不希望将它们作为卷包含在内。我需要访问的文件会随着时间变化,这意味着我将需要反复重新安装,除非我只能安装一个目录,而且该目录中的任何内容也会被安装。 我只需要允许将软件程序推送到容器中,以“在”我的本地系统上运行,该软件程序可以访问我的本地系统上的文件。 忠告?除了添加需要作为卷处理的文件之外,还有其他方法吗? 问题答案: 我用以下命令解