android 内部存储访问,android – 如何让用户访问我的应用程序的内部存储目录?...

我的应用程序将文件存储在其内部存储目录(/Android/data/com.mycompany.myapp/files,由getFilesDir()返回),我希望允许用户直接从他们的文件管理应用程序访问这些文件移动设备或Android文件传输桌面应用程序.

By default, files saved to the internal storage are private to your application and other applications cannot access them (nor can the user).

“默认情况下”意味着我可以更改默认权限以允许用户访问这些文件,但我找不到任何有关如何执行此操作的文档.当我使用文件管理应用程序浏览/ Android / data目录时,目前隐藏了com.mycompany.myapp目录.

我目前正在保存这样的文件数据:

String fileName = "myfile.jpg";

String filePath = getFilesDir() + File.separator + fileName;

FileOutputStream fileStream = new FileOutputStream(filePath);

fileData.writeTo(fileStream); // fileData is a ByteArrayOutputStream

fileStream.close();

我尝试将各个文件的权限设置为全局可读,但这并未使目录可见:

FileOutputStream fileStream = this.app.openFileOutput(fileName, Context.MODE_WORLD_READABLE);

我还检查了AndroidManifest文件的文档,但没有看到任何内容.有谁知道我怎么做到这一点?

解决方法:

我仔细研究了getFilesDir()vs getExternalFilesDir()的结果,发现getFilesDir()返回/ data / data / [packagename] / files,而getExternalFilesDir()返回/ Android / data / [packagename] / files.我认为我在/ Android / data中浏览的应用程序文件是内部存储目录,但现在我看到那些实际上是外部存储目录.

如果内部存储目录确实永远不会被普通用户使用,我希望文档说不是说“默认情况下”它们不可用.至少对我来说,“默认情况下”表示可以更改默认行为.

无论如何,我测试并确认如果删除我的应用程序,保存到getExternalFilesDir()的文件会自动删除.这样就满足了我对与应用程序明确连接的存储位置的需求(使用特定于应用程序的目录名称并随应用程序删除),但用户可以访问,以便偶尔进行手动文件管理.

这是一个比较,可能有助于其他人阅读此内容:

> getFilesDir() – 创建特定于应用程序的目录;隐藏于用户之外;随应用删除

> getExternalFilesDir() – 创建特定于应用程序的目录;用户可以访问;随应用删除

> getExternalStoragePublicDirectory() – 使用共享目录(例如,音乐);用户可以访问;应用程序删除后仍然存在

标签:fileoutputstream,android,file-permissions

来源: https://codeday.me/bug/20190926/1818560.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值