首页  >  文章  >  即使有权限,也无法为我的应用程序创建目录或文件

即使有权限,也无法为我的应用程序创建目录或文件

王林
王林转载
2024-02-22 13:28:14382浏览

php小编草莓为您解答Java编程中常见问题:即使具有权限,也无法为应用程序创建目录或文件的情况。这种问题可能出现在操作系统权限设置、文件路径错误、文件已存在等方面。通过排查文件路径、检查操作系统权限、确保文件不存在等方法,可以解决这一问题,确保程序正常运行。如果您遇到类似情况,不妨尝试以上方法看看是否能解决您的困扰。

问题内容

我有一个几年前制作的应用程序。最近我只是重新编译了它,做了很少的更改,这样我就可以更改目标 sdk 并且仍然在 play 商店中列出。

事实证明,这从根本上破坏了某些手机(包括我自己的手机)中的应用程序。在上传之前,我在另一部手机上对其进行了测试,并且运行良好(android 版本 8.1.0)。我的手机运行的是 android 11(无法运行)。

问题似乎在于在内部存储中创建和读取文件的能力,而应用程序的重点是维护单个文件。

这是我尝试创建目录的函数。这只是我在创建时调用的测试函数,它不是原始应用程序的一部分:

public static void AttemptDirCreate(){
    String dirname = Environment.getExternalStorageDirectory().toString() + "/this_is_a_test";
    File dir = new File(dirname);

    System.err.println("Attempting to create directory: '" + dirname + "'");

    boolean make_result = false;
    if (!dir.exists()) {
        try {
            make_result = dir.mkdir();
        }
        catch (SecurityException se) {
            System.err.println("ERROR. Could not make dir. Reason: " + se.getMessage());
        }
    }

    if (make_result){
        System.err.println("MKDir result is true");
    }
    else {
        System.err.println("MKDir result is false");
    }

    if (dir.exists()){
        System.err.println("Dir has been created");
    }
    else {
        System.err.println("Was unable to create dir");
    }

}

问题是没有创建目录并且没有抛出异常。当我进入应用程序信息时,我看到文件和媒体的权限。

尝试创建目录的路径是:'/storage/emulated/0/this_is_a_test'

据我所知,这是正确的路径。该应用程序在首次安装时确实询问了我的权限。

那么为什么它不能创建目录呢?如何找出问题并解决它?

澄清一下,这个完全相同的功能适用于 android 8.1.0,但不适用于 android 11。不确定,截止点是什么。

解决方法

您无法在 Android 11+ 设备的外部存储根目录中创建文件和目录。

而是使用已有的公共目录之一。

喜欢 DCIM、图片、文档...

以上是即使有权限,也无法为我的应用程序创建目录或文件的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文转载于:stackoverflow.com。如有侵权,请联系admin@php.cn删除