gpt4 book ai didi

java - 无法在android内部存储中创建文件夹

转载 作者:行者123 更新时间:2023-11-30 12:02:28 24 4
gpt4 key购买 nike

我想在手机的内部存储中创建一个文件夹,但无论我做什么,它都不会创建

我尝试过的事情:

  • 从电脑上拔下手机

  • 在 list 中和以编程方式为 API 23+ 设置权限

  • 我能找到的文件夹的每个变体:Environment.getExternalStoragePublicDirectory(环境.DIRECTORY_DOWNLOADS)环境.getDataDirectory()等等。

  • 在每篇文章或文章的变体中搜索类似问题

  • 尝试了 mkdir() 和 mkdirs() 的两种变体

  • 检查手机是否存在文件夹

此代码还绑定(bind)到一个按钮,因此在我第二次按下它时应该已经授予权限请求。

File sdir = new File (Environment.getExternalStorageDirectory().getpath(), "/DBTEST/");

String[] PERMISSIONS_STORAGE = {
Manifest.permission.WRITE_EXTERNAL_STORAGE
};
ActivityCompat.requestPermissions(MainActivity.this, PERMISSIONS_STORAGE, 1);

System.out.println("DIRECTORY CREATED: " + sdir.mkdirs());
System.out.println("EXISTS: " + sdir.exists());
System.out: DIRECTORY CREATED: false
System.out: EXISTS: false
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
package="com.example.testM">

<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />

最佳答案

尝试改变这一行:

File sdir = new File (Environment.getExternalStorageDirectory().getpath(), "/DBTEST/");

File sdir = new File (Environment.getExternalFilesDir(null) + "/DBTEST/");

根据开发者文档:

getExternalStorageDirectory() - This method was deprecated in API level 29. To improve user privacy, direct access to shared/external storage devices is deprecated. When an app targets Build.VERSION_CODES.Q, the path returned from this method is no longer directly accessible to apps. Apps can continue to access content stored on shared/external storage by migrating to alternatives such as Context#getExternalFilesDir(String), MediaStore, or Intent#ACTION_OPEN_DOCUMENT.

getExternalFilesDir(null) 将在 (Internal Storage)/Android/data/your.app.name/file/返回您的应用程序存储文件夹

如果您想访问某些操作系统定义的文件夹,您只需传递此处定义的环境常量:

https://developer.android.com/reference/android/content/Context#getExternalFilesDir(java.lang.String)

这里

https://developer.android.com/reference/android/os/Environment

在“字段”部分下。

例。下载将是:getExternalFilesDir(Environment.DIRECTORY_DOWNLOADS)

关于java - 无法在android内部存储中创建文件夹,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58578947/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com