问题标签 [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.
java - Android SAF 可以访问 SD 卡上的特定目录
我仍在寻找,但也许有人面临同样的问题。我正在维护一个应用程序。这个应用程序将一些数据存储在两个地方(比如说在 sdcard/example 和 external_memory/example 上)。在迁移到最新的 Android Api 之前,使用ExternalStorage.getAllExternalStoragePaths()
. 现在我仍然能够获得两条路径,但是 sdcard/example 路径不可读也不可写..
我阅读了有关 SAF 的信息,但在我的情况下,这不是一个解决方案——存储在两个目录中的文件都是使用本机库(C++)解析的——我需要它的路径,比如/storage/sdcard/example/test.xml
. 否则库无法读取此文件。不幸的是,由于缺少资源,我无法更改库。
我想问三个问题:
- 有没有其他方法可以要求访问 SD 卡上的目录并像旧方式一样使用该目录?
- 也许我可以说 Android -“嘿,我想在 SD 卡上有 Example 目录并维护它”?
- 或者我可以在没有 ContentResolver 的情况下使用 SAF?
/storage/sdcard/Android/data/com.example/files/
利益相关者不接受将文件移动到其中。
android - Sharedpreferences Vs SQLite 无需搜索即可处理大数据
我知道 SQLite 在技术上是为大量数据而设计的,而 SharedPreferences 对于简单数据类型来说更容易、更快。
我想为一年中的每一天存储简单的真假布尔值。这意味着我要么必须创建 3 维 json 并将其作为字符串存储在共享首选项中(或者以年份为键的维度数组),要么创建具有年份月份和数据作为单独列的表(或者它可以是简单的日期列.. . 话虽如此,我也可以在 sharedPreferences 中使用“YYYY-MM-DD”作为 365 个布尔值的键)。
现在问题来了。如果我 100% 确定我不需要通过特殊参数功能进行任何搜索/分组/选择,我是否应该使用更复杂的 SQLite 数据库来存储这些简单数据。因为在我看来,如果我需要存储简单的布尔值(即使总共有 365 个以上的布尔值),我应该使用 SharedPreferences,因为它是一个更快的解决方案。但这对我来说似乎有点不对,因为我不确定 SharedPreferences 是否应该存储这么多变量。
添加:
这些布尔值仅在本地存储以供离线加载或从用户角度更快地访问。这些 1|0 值存储在每个应用程序用户的服务器上,因此即使我会对数据进行一些复杂的工作,我也不确定是否需要在手机上进行。
android - MediaStore.Audio.Media.EXTERNAL_CONTENT_URI 不在数据文件夹内扫描
我正在使用 MediaStore.Audio.Media.EXTERNAL_CONTENT_URI 从设备获取音乐文件。对于其他文件夹,它工作正常。但它不是在应用程序的数据文件夹中获取/扫描音乐文件(getFilesDir()。getAbsolutePath())......为什么?有什么限制吗???TIA。
android - 存储对带有附加信息的 .mp3 文件的引用的最佳方式,保存在手机存储/外部卡中
我目前正在开发有声读物播放器应用程序,我正在考虑如何保留对有声读物文件的引用。
到目前为止,我让用户指定保存书籍的文件夹并识别子文件夹/特定书籍。
现在我需要存储这些引用。有声读物总是分很多部分发行,所以假设我们有一本“风暴季节”一书,我们有这本书的 20 个部分:seasonofstorms-part1、seasonofstorms-part2 等等。
我需要将它们与特定书籍保持联系,并且我需要存储更多附加信息,例如用户完成收听的部分的名称,以及再次打开书籍时该部分应该开始的时间。
所以我认为它可以很好地适应一些 JSON 模式。我可以制作像这样的 POJO:
- 显示字段:名称和列表部分,
- 带有字段的部分:状态[完成,未开始,进行中],时间。
恢复收听书籍后,应用程序将搜索状态为“进行中”的部分并在“时间”开始播放。我可以将这些 POJO 解析为 JSON 并将它们保存在 SharedPreferences 中。你怎么看这种方法?一些更好的选择?我怎样才能以任何其他方式完成这项工作,您认为最好的方法是什么?
java - Can't get content URI for file in external-files-path on some devices
My application uses FileProvider
to get a content URI for a file created in a subdirectory on the external storage and grant permissions to the selected camera application so it can save a photo to that file. It works like a charm on every device and emulator except one which I don't own - Huawei Honor 7 (I have a crash log from that device). I'm trying to understand the problem and find a way to fix it.
AndroidManifest.xml
file_provider_paths.xml
When I create an empty file to share with the camera application, I obtain the base external directory path using Context.getExternalFilesDir(null)
.
It usually returns a path like this: /storage/emulated/0/Android/data/<package>/files
which is the same as these:
Context.getExternalFilesDirs(null)[0]
ContextCompat.getExternalFilesDirs(context, null)[0]
And I put the file a bit deeper, e.g. /storage/emulated/0/Android/data/<package>/files/247/images/ad4b7cd7-8917-43d5-8f6c-69555d76c0e0
Then I call FileProvider.getUriForFile(context, "<package>.fileprovider", file)
As I said, it works properly on everything I have, both emulators and devices, with APIs 19 to 25.
Now, there is that crash:
I have found out that the current FileProvider
implementation matches the external-files-path
tag with this piece of code:
So my idea is that maybe Context.getExternalFilesDir(null)
gives a different storage directory than ContextCompat.getExternalFilesDirs(context, null)
at 0
index. If so, I would create a file on the storage which is not supported by the FileProvider
.
I have also found some issue reported to Google regarding this limitation.
Do you think that's the real root cause or do you have any other ideas?
android - 从外部存储加载 ListView 上的 .mp3 文件列表不适用于棉花糖
可能这在 Lolipop/Kitkat 之前有效,但我没有测试它。我正在我的 xperia m2 aqua 上的棉花糖上测试它,它没有显示我的可移动 sdcard 中的音乐,所以,我从 sdCard 复制了两首音乐到内部存储,它正在显示这两首音乐。其他音乐播放器在手机上运行良好。下面是我的代码:
来自上述代码结果的 Log.d
清单许可
和 Permisson 以编程方式用于 Marshmallow 及更高版本
结果 它只显示来自内部存储的歌曲。我已将两首歌曲添加到内部存储以进行检查,并且显示。尽管我已经设置了权限和所有工作代码,为什么不从 sdCard 读取?
更新
@Manoj 已将此问题标记为可能重复,但事实并非如此。我已经给予了适当的许可,如果用户也点击了拒绝,那么下次它会再次询问。在我的代码中,我使用 if/else 来获得许可,我认为@Manoj 没有清楚地看到它。
android - android getExternalStoragePublicDirectory 无法在 4.4.2 中写入,尤其是在 Smasung S3 中
该目录无法在 android 4.4.2 中写入
另外,我使用了清单WRITE_EXTERNAL_STORAGE
android - 尝试使用 getExternalFilesDir(),Android 将下载的文件保存在 SD 卡中
我想下载一个文件,然后将其保存到设备的 SD 卡中。我为此使用 getExternalFilesDir(),这也是 Android 开发人员组推荐的,但是当我运行我的应用程序时,在两个位置(SD 卡和内部存储器)都有为应用程序包创建的目录,但是文件保存在内部存储器中。
android - 在 android 上存储 JSON:sqlite 与 SharedPreference
对于允许我的组织成员在他们的移动设备上查看数据的应用程序,我需要在设备上存储预先格式化的数据,以便他们也可以离线查看。他们如何获取数据是通过 JSON 请求-响应。
响应格式如下(匿名 ofc):
我已经阅读了一些关于如何最好地存储它的讨论:
可以在 SharedPreferences 中保存 JSON 数组吗?
如何在 SharedPreferences 中保存 JSON 数组?
Android:在 android 中为应用程序离线存储 JSON 数据的最佳方式是什么?
Android - 如何将 JSON 对象添加到 sharedPreferences?
通过阅读这些,我了解到 SharedPreference 文件比 sqlite 文件“更快”,但容易损坏。SQLite 是一个数据库,由于数据来自一个数据库,因此我倾向于以牺牲处理速度为代价来使用它。
现在我只需要存储然后读取数据,除非“主服务器”上有更新,否则它不会发生变异,在这种情况下,我可能会擦除本地数据并重新填充它。在这些线程中,我读到将 JSON 存储在 sharedpreference 中很容易但难以阅读。
但是在阅读了这些(以及更多)讨论之后,我并没有更接近了解/决定存储我的 json 的最佳方式是什么。
任何意见是极大的赞赏!
android - 如何在Android中将Image本地存储路径设置为ListView
我的自定义列表适配器代码...
}
我收到了一个 imagePath 列表,例如
d:阵列路径/存储/sdcard/DCIM/Camera/IMG_20170210_163055.jpg
d:阵列路径/存储/sdcard/DCIM/Camera/IMG_20170210_163037.jpg
d:阵列路径/存储/sdcard/DCIM/Camera/IMG_20170217_175804.jpg
d:阵列路径/存储/sdcard/DCIM/Camera/IMG_20170217_175802.jpg
d:阵列路径/存储/sdcard/DCIM/Camera/IMG_20170210_163056.jpg
现在我想使用自定义适配器或使用 ArrayAdapter 将这些路径显示到列表视图。