添加“WRITE_EXTERNAL_STORAGE”后权限仍然被拒绝在AndroidManifest.xml中

发布于 2024-12-23 05:59:03 字数 1425 浏览 6 评论 0原文


解决方案:测试目标项目还必须在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();

}

捕获了IOExcetion,消息是: 新的 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


solution: test target project must also add WRITE_EXTERNAL_STORAGE in AndroidManifest.xml

this question came from an android test project,which can't write test result into SDcard. Add WRITE_EXTERNAL_STORAGE into test target project can solve this problem.


Always throw permission denied when I use code below to write xml file into emulator's sdcard.
I have added WRITE_EXTERNAL_STORAGE" in AndroidManifest.xml.

        @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();

}

catched IOExcetion, the message was:
after new FileWriter: /mnt/sdcard/InterFace_test_result.xml (Permission denied)

Below is the manifest code

<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 card was mounted, because I can use another application to write file into external sd card.

Can anybody give me some suggestion?

PS:
the emulator system is 2.3.3

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

无畏 2024-12-30 05:59:03

问题:

我能理解的是,
您在 Application 标记中添加 permission 两次

  1. 作为属性
  2. ,第二次使用

解决方案:

尝试删除其中任何一个。

Problem:

What I can understand is,
You are adding permission two times

  1. one time in Application tag as an attribute
  2. and second time using <use-permission>

Solution:

Try removing any one of them.

冷︶言冷语的世界 2024-12-30 05:59:03

您应该在 标记之前添加权限标记

You should add permission tag <uses-permission> before <application> tag.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文