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中文网其他相关文章!