带有MODE_WORLD_WRITEABLE的Android getDir()不起作用

时间:2013-03-28 20:57:32

标签: android internal file-access

我希望能够通过Intent.ACTION_VIEW使用任何可用的外部文本编辑器编辑存储在应用程序内部存储器中的文件,方法是启动类型为"text/plain"的{​​{1}},文件URI为争论。虽然外部编辑器可以很好地处理SD卡上的文件,但是他们无法访问Context.getDir()下的文件。

我正在调用getDir()作为Context.getDir("data", Context.MODE_WORLD_WRITEABLE)但是在通过意图将URI传递给外部编辑器时仍然会出现访问被拒绝错误。

根据通过Context.getDir()getDir()的文档应该足以让其他应用访问和修改文件,但似乎并非如此。或者我错过了什么?

所以问题是如何让其他应用程序修改/data/data/app.package/下的特定文件,而无需在SD卡上创建文件副本或诉诸root超级权限?

1 个答案:

答案 0 :(得分:1)

您可以创建自己的API来实现这一目标。

例如,您创建自己的库,它将访问您的内部文件,其他应用程序将访问该库。您甚至可以使用广播接收器或其他您认为适合此目的的方式。

或者,您也可以为此设计内容提供商。

另一种方法是,如果使用这些命令Context.getExternalCacheDir()Context.getExternalFilesDir(type)创建文件,将在SD卡上创建文件,您可以使用直接路径访问该文件。