如何在安卓系统中获取内部下载目录的路径?

4
我需要获取内部下载目录的路径。
我尝试过以下方法:
val home = System.getProperty("user.home")
val downloadsDirectory = File("$home/Downloads"

val downloadsDirectory = File("/storage/emulated/0/Download")

System.getProperty("user.home") 只会返回一个空字符串。

我也尝试了

Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS)

它返回了路径 /storage/emulated/0/Download,但 downloadsDirectory.listFiles() 方法返回 null,尽管该目录中有一个文件。

1个回答

6
在Android 9及以下版本中,使用Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS)
在Android 10及更高版本中,请停止考虑文件。相反,切换到存储访问框架或者对于有限的场景,使用MediaStore.Downloads。详情请参见此处此处

我也尝试了Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS),它返回的路径是“/storage/emulated/0/Download”,而downloadsDirectory.listFiles()方法返回null。 - Dinu Nicolae
1
@DinuNicolae:很可能,您没有使用外部存储的权限。您需要在清单文件和运行时中请求READ_EXTERNAL_STORAGE权限。如果您的Android应用程序开发书籍是在过去五年中编写的,则应涵盖此过程。 - CommonsWare
1
@DinuNicolae:这对于Android 5.1及更早版本已足够。在Android 6.0及更高版本中,您还需要在运行时请求权限 - CommonsWare
1
@DinuNicolae:如果模拟器运行的是Android 10或更高版本,无论权限如何,您将无法访问该目录。 - CommonsWare
1
谢谢你告诉我。我在尝试访问那个目录时已经快疯了:D - Dinu Nicolae
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接