问题标签 [android-storage]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
5989 浏览

android - 如何在android的存储目录中创建文件夹和文件

我想创建一些文件夹和一些文件到/storage/MyFolder/. 我曾尝试使用/storage/emulated/0/MyFolder它并且它正在工作,但我想隐藏在存储根文件夹下。

我有什么可能的方法吗?

0 投票
0 回答
412 浏览

android - FileProvider 如何在 provider_path.xml 中选择/区分提供者路径?

我必须使用 FileProvider 来安装 apk。现在一切正常,但我并不真正理解 FileProvider 为了选择在provider_paths.xml中定义的正确路径而遵循的行为。这是我的代码:

清单.xml

main_activity.java

provider_paths.xml

使 FileProvider 在external_pathfiles_path(或文件中定义的任何内容)之间进行选择取决于什么?

0 投票
3 回答
3148 浏览

android - 访问 ActivityResult 上的公共下载文件 Android 28 Samsung Galaxy S9+ (Verizon)


更新

我有一台运行 8.0.0 T-Mobile 的三星 Galaxy S8+,它在运行 8.0.0 时运行良好

我的三星 Galaxy S9+ 运行 8.0.0 Verizon,每次都因非法参数而失败。

我的三星 Galaxy S9+ 运行 8.0.0 T-Mobile 没有问题并且工作正常

因此,这可能是 OEM 特定型号问题,但尚不确定如何解决。我也试过重启手机,结果没有变化。

此外,我从 Evernote 中打开了公共下载文件并将文件作为附件保存到 Note,这告诉我 Evernote 能够很好地访问公共目录并附加文件,因此可以在设备上进行。让我相信它与代码相关。


因此,我最近升级了一个运行良好的项目,现在它有一个错误,因为它正在使用构建工具 28 进行编译,适用于最新版本的 Android。

所以我一直使用这个 PathUtil 从隐式意图中获取我需要的文件路径,以从用户那里获取文件选择。我将在下面分享一个我使用了很长时间的代码的链接。

路径工具

它只是一个实用程序类,用于检查提供者权限并获取您尝试读取的文件的绝对路径。

当用户从公共下载目录中选择一个文件时,它会返回到onActivityResult

现在 nice 实用程序将其解析出来并告诉我这是一个下载目录文件,并且是一个 id 为 2025 的文档。感谢实用程序,这是一个很好的开始。

接下来是使用内容解析器来查找文件的绝对路径。这曾经是有效的,但不再有效:​​(。

现在,路径实用程序只使用他们最有可能从核心库自己获得的合约数据。我尝试导入提供程序类以避免静态字符串,但它似乎不可用,所以我想简单地使用匹配字符串是目前最好的方法。

这是核心 DownloadProvider 供参考,它为内容解析器提供所有访问权限。 下载提供者

注意* 这个 DownloadProvider 是 Android,不是我的

这是为 contentProvider 构建 Uri 的代码

调用参考:

本质上,要解决的 contentUri 最终是

内容://下载/public_downloads/2025

然后,当您调用查询方法时,它会抛出:

java.lang.IllegalArgumentException:未知 URI:content://downloads/public_downloads/2025

我已经确认或尝试过的事情

  1. 读取外部权限(附带写入,但还是这样做了)
  2. 写入外部权限
  3. 权限在清单中并在运行时检索
  4. 我选择了多个不同的文件,看看其中一个是否奇怪
  5. 我已确认在应用程序设置中授予权限
  6. 我最后将 Uri 硬编码为 /1 甚至 /#2052 以尝试各种结束类型
  7. 我研究了核心库上的 uriMatching 以了解它期望它如何格式化并确保它匹配
  8. 我已经在 uri 中使用了 all_downloads 目录并解决了!!,但是有安全异常,所以解析器必须存在。

我不知道还能尝试什么,任何帮助将不胜感激。

0 投票
1 回答
846 浏览

java - 打开失败:EACCES(权限被拒绝)?

那行代码应该已经在 sd 卡的目录 foo 中创建了一个文件(已安装 sd 卡)。然而System.getenv("SECONDARY_STORAGE")回报"/storage/sdcard1"。它应该可以正常工作,只是首先应该创建文件的代码会抛出

注:一个子类IOException

阅读使用System.getenv("SECONDARY_STORAGE")工作正常,但是,所有的写作方式都会失败,但同样的例外。

这很容易通过使用来避免,"/sdcard/"但该方法不可靠,因为并非所有制造商都会在 root 中放置 sdcard 快捷方式。

有没有办法可靠地解决这个问题?

0 投票
3 回答
920 浏览

java - 如何在android中创建一个新文件夹?

我想在外部存储中创建一个新文件夹。我使用这段代码:

执行后它会工作并在内部存储中创建一个新文件夹,而不是在外部存储中。如何在外部存储中创建新文件夹?

我 100% 确定我的设备中有外部存储,它有 14 GB 可用空间,位置是/storage/extSdCard.

我已经在两部三星手机 Android 版 jellybean 和 Kitkat 上测试了这段代码,但结果相同。

0 投票
1 回答
114 浏览

java - 为什么在内部存储而不是外部存储中创建新文件夹?

我尝试在外部存储 SD 卡中创建一个新文件夹。使用此代码:

和这个权限:

但执行此代码后,它会在内部存储中创建一个新文件夹。这是内部存储的屏幕截图:

在此处输入图像描述

虽然外部存储中没有新文件夹。这是外部存储的屏幕截图:

在此处输入图像描述

我应该怎么办?我想通过使用 Kotlin 或 java 代码在外部存储中创建一个新文件夹。

0 投票
1 回答
1309 浏览

java - 如何在 Android 上的 SdCard 根目录中创建一个新文件夹?

我想在 SdCard 的 Root 或主页中创建一个新文件夹。我已经使用这种方法来获取 SdCard 位置:

但是这种方法在某些设备上不起作用。我需要一种适用于所有设备并获取 SdCard 位置的方法。

我也试过:

但是这种方法的目标是设备存储。但我想要SD卡。

0 投票
1 回答
2182 浏览

android - java.io.FileNotFoundException: (Permission denied) in oreo android

以下代码用于在 sdcard(外部存储)中创建的文件中写入联系人详细信息:

其中,cpath是我的文件在 sd 卡中的路径。

在这里,我在线收到错误:

我得到以下日志: -

文档树选择代码:

笔记:

  1. 我只在 android oreo 版本中收到此错误。它在牛轧糖中工作正常。
  2. 我已经授予运行时权限,并且在清单文件中也提到过。
  3. 我已经为文档文件权限实现了 SAF。
0 投票
3 回答
2670 浏览

java - 如何在android中获取SD卡路径?

我需要 SdCard 路径来保存文件。我尝试了一些代码,但这些代码在某些设备或 Android 版本上不起作用。现在我需要一个代码/路径来获取所有设备和所有 Android 版本的 SdCard 路径。

0 投票
2 回答
1052 浏览

android - 访问 Android 应用的内部文件目录

我正在创建一个应用程序,作为中间步骤,它应该将一些数据输出到应用程序内部文件 dir中的文件中。adb鉴于不允许我将此文件复制到开发人员的机器上,我如何测试该文件的内容是否正确创建?

我可以在应用程序的 linux 用户下运行 adb shell,但是我只能执行通过命令行可用的检查,所以我无法亲眼看到图片。

我可以将相同的文件写入可访问的外部存储,但除了需要额外的代码来获得 write-external-storage 权限之外,它不会测试相同的东西。

我也可以root手机,但我觉得要在手机上访问我正在开发的应用程序上的文件,需要像root这样激烈的步骤是非常荒谬的。