我正在尝试创建一个android应用程序,该应用程序可以写入一个文本文件,稍后按下按钮即可访问该文件。
在过去的一周里,我尝试了人们建议的一系列写入内部存储的方法,有时它似乎可以工作(使用outputwriter和File类?),但我永远无法在我测试运行它的Android设备上找到文件。
我对安卓系统的开发还很陌生,所以这一切让我很困惑
感谢
如果你所说的"内部存储"是指Android SDK所说的内部存储,这是不可能的。你在那里创建的文件只能由你的应用程序访问,而不能由设备上或设备外的文件管理器访问。
如果你所说的"内部存储"是指Android SDK所说的外部存储,你需要:
- 获取指向外部存储上的目录的
File
,例如在某些Context
上调用getExternalFilesDir()
,例如您的Activity
- 如果该目录不存在,请创建该目录
- 在该目录之外创建一个指向要创建的文件的
File
对象 - 使用标准Java文件I/O写入由该
File
标识的位置 - 使用
MediaScannerConnection
及其scanFile()
方法告诉Android"嘿,我刚刚把一个文件放在外部存储器上,请对它进行索引,以便它显示在文件管理器中"
还有:
- 理想情况下,您在后台线程上进行磁盘I/O,这样在工作进行时就不会冻结UI
- 根据您的
minSdkVersion
和您选择写入文件的位置,您可能需要WRITE_EXTERNAL_STORAGE
权限 - 根据您的
targetSdkVersion
,您可能需要在运行时请求WRITE_EXTERNAL_STORAGE
您有时可以访问内部存储,但这取决于您的手机。
- 你总是可以从内部内存中获取根手机的数据(需要根)。文件在文件夹/Android/data/中
- 一些供应商允许您通过adb在无根手机上运行root shell(我在Explay选项卡上看到了这种行为)只需运行
adb shell su
测验然后您可以将文件从内部存储复制到公共存储使用shell命令 - adb pull在这种情况下也可能起作用。(再次取决于供应商)