java - 如何从 Android 模拟器应用程序写入本地 PC 文件
问题描述
我已经搜索了几个小时,遇到了很多关于只读这个和那个以及文件夹和目录以及查看手机 fs 等的废话。
我想要做的就是写入我 PC 上的一个文件,用于 Android 项目。我尝试使用本地路径(Windows)并且遇到了只读 fs 系统问题,即使在将所需文件夹完全转换为读写之后,Android 也拒绝获取它。我在清单中使用 WRITE_EXTERNAL_STORAGE 和 WRITE_INTERNAL_STORAGE 设置了使用权限,但没有运气。
我试图通过模拟器和实际的物理电话写入手机,但我所做的每次搜索都没有结果(搜索文件名)。
如何写入日志文件,即我的开发源代码所在的任何文件?我需要从 Web 服务调用中消化 JSON 数据,并且需要将其写入本地文件,以便我可以使用它。这些调用是通过 Android 进行的,目前是一个模拟器,并安装在物理设备上,但没有写入日志,因为要么是一个无意义的只读问题,要么我只是找不到该死的文件。
任何帮助将不胜感激。
解决方案
我想最终我问的问题太混乱了。我想知道在我的 Android 设备上哪里可以找到“本地”日志,我可以在一些文本编辑器中打开并阅读自己的日志。在通过模拟器测试应用程序时,我还想知道“本地”日志/文件写入硬盘的位置。
在这一点上,我还没有发现任何与日志文件或任何能够从 Android 应用程序写入本地开发 PC 的任意文件相关的内容,而无需从adb
.
我找到了可以将任意文件写入模拟器或手机文件系统的解决方案(来源:https ://www.journaldev.com/9383/android-internal-storage-example-tutorial ):
FileOutputStream fos = Main.getAppContext().openFileOutput( "myfile.txt", Context.MODE_PRIVATE );
fos.write( "Hello, world".getBytes() );
fos.close();
需要注意的一些事项(至少 Android SDK 26+,其他未经测试):
FileOutputStream
效果很好。- “主要”是指您为应用程序使用的任何入口点类。它最有可能(或必须?) extends
AppCompatActivity
。 Context.MODE_PRIVATE
似乎是必需的。READ_EXTERNAL_STORAGE, WRITE_EXTERNAL_STORAGE, READ_INTERNAL_STORAGE, WRITE_INTERNAL_STORAGE
似乎不需要AndroidManifest.xml 权限。- 重要提示:文件将保存到
/data/data/YOUR.APP.PACKAGE/files/
.
推荐阅读
- c# - 使用 Docker 卷持久化 mcr.microsoft.com/mssql/server:2019-latest 容器时权限被拒绝
- google-bigquery - 在 BigQuery Schedule 作业中仅截断日期分区表中的特定分区
- c# - 如何在将用户引导到异地然后返回时保持会话?
- azure - 对 Catalina 的 Azure Data Studio 支持
- html - 操作删除不会删除所选行
- firebase - 在构建 Builder(dirty) 时引发了以下 RangeError:
- ruby-on-rails - 使用 where 条件在连接表中选择不匹配的行
- java - 使用外键的 JPQL 查询
- c++ - 为什么 C++ 构造函数在继承中需要默认参数?
- java - 使用 jlink 为外部 JAR 生成模块信息