从任意SD卡文件夹中读取数据

3

我正在尝试读取SD卡上的字典(文件夹内容由第三方应用程序管理 - 例如Dropbox)。

虽然我已经授予了我的应用程序权限:

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

该应用程序仅在一种设备上使用,即三星Galaxy Tab 10.1(Android 5.0.2),因此我知道要读取的确切路径和文件:/storage/extSdCard/sip.png

当我调用:

FileOutputStream out = new FileOutputStream("/storage/extSdCard/sip.png");

它会抛出以下异常:

exception java.io.FileNotFoundException: /storage/extSdCard/sip.png: open failed: EACCES (Permission denied)

我也尝试过:

grantUriPermission(getPackageName(), new Uri.parse("/storage/extSdCard"),
Intent.FLAG_GRANT_READ_URI_PERMISSION | Intent.FLAG_GRANT_WRITE_URI_PERMISSION);

我需要做什么来获取文件访问权限?

1个回答

2
我需要做什么才能访问这个文件?
在Android 4.4+上,您无法直接访问可移动存储上的任意位置的文件系统。
如果可能,请将文件移动到其他位置(例如外部存储)。
或者,使用 ACTION_OPEN_DOCUMENT,让用户选择文件,然后使用ContentResolveropenInputStream()处理ACTION_OPEN_DOCUMENT请求中从onActivityResult()获得的Uri所标识的内容。

该应用程序使用动态读取可移动存储上的文件,并由另一个应用程序同步。是否有其他方法可以读取更多的文件? - M. Sestak
@M.Sestak:很抱歉,我不理解你的问题。 - CommonsWare
@CommonsWare 谢谢提供链接。这对向客户解释时会非常有帮助。 - Vojtech B

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接