在将“WRITE_EXTERNAL_STORAGE”添加到AndroidManifest.xml后,仍然出现权限拒绝的问题

7

解决方案:测试目标项目也必须在AndroidManifest.xml中添加WRITE_EXTERNAL_STORAGE。

这个问题来自于一个Android测试项目,无法将测试结果写入SD卡。在测试目标项目中添加WRITE_EXTERNAL_STORAGE可以解决这个问题。


当我使用下面的代码将XML文件写入模拟器的SD卡时,总是抛出权限被拒绝的异常。我已经在AndroidManifest.xml中添加了WRITE_EXTERNAL_STORAGE权限。

        @Override
public void onStart(){

    try {
        File root = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS);
        myWriter = new FileWriter(new File(root, TEST_RESULT+".xml"));          
        startResultOutput(myWriter);
    } catch (IOException e) {
        Log.d("TestInfo", "after new FileWriter: "+e.getMessage());
    }
    super.onStart();

}

捕获到了IOException,错误信息为: 在新建FileWriter之后:/mnt/sdcard/InterFace_test_result.xml(权限被拒绝)

以下是清单文件代码:

<application android:icon="@drawable/icon" android:label="@string/app_name">

<uses-library android:name="android.test.runner" />
</application>

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

SD卡已挂载,因为我可以使用其他应用程序向外部sd卡写入文件。

有人能给我一些建议吗?

注: 模拟器系统为2.3.3


1
你在模拟器参数中设置了SD存储卡吗?在创建界面中,有一个选项可以设置。 - Erhard Dinhobl
是的,我可以使用另一个应用程序将文件写入我的模拟器的SD卡中,并且从adb shell中,我也可以操作SD卡。 - Millie
我遇到了同样的问题。你解决了吗?请看我的帖子:http://stackoverflow.com/questions/10877740/traceview-cant-write-sd-card - gladman
对于模拟器,请确保至少有512MB大小的SD卡。 - hB0
2个回答

1

问题:

我的理解是,您正在两次添加permission

  1. 一次在Application标签中作为属性
  2. 第二次使用<use-permission>

解决方案:

尝试删除其中一个。


谢谢你的帮助,但它仍然无法工作。我从应用程序标记中删除了一个权限... - Millie

0

<application>标签之前,您应该添加权限标签<uses-permission>


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