首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >android写入外部存储的权限失败

android写入外部存储的权限失败
EN

Stack Overflow用户
提问于 2016-01-14 17:02:26
回答 2查看 280关注 0票数 1

我无法在android中写入外部存储。我得到了以下堆栈跟踪: 01-14 10:57:07.108: W/System.err(17380):java.io.FileNotFoundException:

代码语言:javascript
复制
/mnt/media_rw/extSdCard/SterlingPixels.apk: open failed: EACCES (Permission denied)
01-14 10:57:07.108: W/System.err(17380):    at libcore.io.IoBridge.open(IoBridge.java:456)
01-14 10:57:07.108: W/System.err(17380):    at java.io.FileOutputStream.<init>(FileOutputStream.java:87)
01-14 10:57:07.108: W/System.err(17380):    at java.io.FileOutputStream.<init>(FileOutputStream.java:127)
01-14 10:57:07.108: W/System.err(17380):    at java.io.FileOutputStream.<init>(FileOutputStream.java:116)
01-14 10:57:07.108: W/System.err(17380):    at com.codename1.impl.android.AndroidImplementation.createFileOuputStream(AndroidImplementation.java:4258)
01-14 10:57:07.108: W/System.err(17380):    at com.codename1.impl.android.AndroidImplementation.openFileOutputStream(AndroidImplementation.java:4210)
01-14 10:57:07.108: W/System.err(17380):    at com.codename1.io.FileSystemStorage.openOutputStream(FileSystemStorage.java:263)
01-14 10:57:07.108: W/System.err(17380):    at com.codename1.io.ConnectionRequest.readResponse(ConnectionRequest.java:783)
01-14 10:57:07.108: W/System.err(17380):    at com.codename1.io.ConnectionRequest.performOperation(ConnectionRequest.java:440)
01-14 10:57:07.108: W/System.err(17380):    at com.codename1.io.NetworkManager$NetworkThread.run(NetworkManager.java:263)
01-14 10:57:07.108: W/System.err(17380):    at com.codename1.impl.CodenameOneThread$1.run(CodenameOneThread.java:60)
01-14 10:57:07.108: W/System.err(17380):    at java.lang.Thread.run(Thread.java:818)
01-14 10:57:07.108: W/System.err(17380): Caused by: android.system.ErrnoException: open failed: EACCES (Permission denied)
01-14 10:57:07.108: W/System.err(17380):    at libcore.io.Posix.open(Native Method)
01-14 10:57:07.108: W/System.err(17380):    at libcore.io.BlockGuardOs.open(BlockGuardOs.java:186)
01-14 10:57:07.108: W/System.err(17380):    at libcore.io.IoBridge.open(IoBridge.java:442)
01-14 10:57:07.108: W/System.err(17380):    ... 11 more

我不能在构建提示中包含"<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>",因为这会导致在合并manifests..so时构建失败,我假设构建系统正确地创建了此权限。除非它不起作用。还是我弄错了?

EN

回答 2

Stack Overflow用户

发布于 2016-01-15 05:30:39

我确实连接了usb,但这并没有在断开连接后立即解决我的问题。因此,一开始我获得了写入文件的路径,如下所示:

代码语言:javascript
复制
 String root = roots[0];
        for (String root1 : roots) {
            if (FileSystemStorage.getInstance().getRootType(root1) == FileSystemStorage.ROOT_TYPE_MAINSTORAGE) {
                root = root1;
                break;
            }
        }
        root= root + FileSystemStorage.getInstance().getFileSystemSeparator();

出于某种奇怪的原因,上面的代码总是返回外部存储;我想它应该返回内部电话存储。所以这总是让我头疼的权限问题。这是在Android 5.1.1上。

我确实把这个改成了

代码语言:javascript
复制
String root = FileSystemStorage.getInstance().getAppHomePath();

这当然是有效的,但这肯定不能解决我的情况下的权限问题。

票数 1
EN

Stack Overflow用户

发布于 2016-01-15 11:36:32

您不需要在Codename One中添加WRITE_EXTERNAL_STORAGE权限,因为默认情况下会请求该权限。较新的构建被迁移到gradle,它在清单使用方面比Ant更严格,因此您会收到错误。

请确保您的设备未连接为大容量存储设备,这有时会导致SD卡上的文件访问冲突。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34785336

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档