即使在寻求存储权限后也没有创建目录
Posted
技术标签:
【中文标题】即使在寻求存储权限后也没有创建目录【英文标题】:Directory is not being created even after seeking Storage permission 【发布时间】:2021-08-17 20:23:50 【问题描述】:我只是想创建一个目录,寻求所需的权限,包括清单中的权限,但仍然没有创建目录。
下面是我的代码-
public class MainActivity extends AppCompatActivity
@Override
protected void onCreate(Bundle savedInstanceState)
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
if(haveStoragePermission())
File new_folder = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS), "Images");
if (!new_folder.exists())
new_folder.mkdirs();
boolean k= new_folder.mkdirs();
if (k)
Toast.makeText(this,"Directory created successfully",Toast.LENGTH_LONG).show();
else Toast.makeText(this,"Failed to create directory",Toast.LENGTH_LONG).show();
【问题讨论】:
Mohit 已经告诉您无法创建该文件。new_folder.mkdirs();
但是.. 在此之前没有创建该文件夹。而且您不知道,因为您不检查 mkdirs() 的返回值。
是的,我之前也请求过权限,我已经编辑了我的问题,现在你也可以看到我的用户权限功能。
????您仍然没有检查 mkdirs() 的返回值。做它并告诉会发生什么。更好的是:在调用异步任务之前检查文件夹是否存在。不要让自己失去权限。您应该首先编写好的代码,这样您就知道您不能从创建目录开始。并且知道你也会知道然后开始你的异步任务是无济于事的。
所以删除所有代码并仅发布您尝试创建该目录的代码。因为那是你的问题。
是的,按照你的建议检查了一下,返回false,我不明白为什么即使成功寻求许可。
【参考方案1】:
问题不在于文件下载。问题是您无权访问存储。请检查错误。
Caused by: android.system.ErrnoException: open failed: ENOENT (No such file or directory)
看来无法创建文件。您可能需要检查您是否具有写入存储的权限。如果您不想请求该权限,您可以在内部存储中创建文件。
你应该这样称呼它
if(haveStoragePermission())
DownloadTask downloadTask = new DownloadTask();
downloadTask.execute("https://www.popwebdesign.net/popart_blog/wp-content/uploads/2018/01/tiny-png-panda.jpg");
【讨论】:
但是我已经在 manifest.xml 中提到了以下权限问题出在 Android 10 权限,这里在清单中寻求权限有点不同,我们需要在 manifest.xml 中添加以下行- android :requestLegacyExternalStorage="true" 如下所述-
<application>
android:requestLegacyExternalStorage="true"
</application>
【讨论】:
以上是关于即使在寻求存储权限后也没有创建目录的主要内容,如果未能解决你的问题,请参考以下文章
加载共享库时出错:即使在使用 LD_LIBRARY_PATH 并更改 $PATH 后也没有这样的文件或目录
Android kotlin:即使在授予权限后也获得 EACCES(权限被拒绝)
Facebook Android SDK 即使在许可后也没有电子邮件