我正在我的应用程序中生成一个excel表,生成后应自动保存在任何Android设备的**“Downloads”**文件夹中,所有下载通常保存在该文件夹中。
我有以下保存文件在“我的文件”文件夹-
File file = new File(context.getExternalFilesDir(null), fileName);
导致-
W/FileUtils﹕ Writing file/storage/emulated/0/Android/data/com.mobileapp/files/temp.xls
我更希望在生成Excel工作表时将生成的文件自动保存在**“Downloads”**文件夹中。
**更新#1:**请在此处查看快照。我想要的是红色圆圈中的文件夹,如果您认为有意义,您建议的内容将存储在蓝色圆圈中(/storage/emulated/0/download)。请建议我如何将文件保存在红色圆圈中,即“Downloads”文件夹,该文件夹不同于“MyFiles”下的/storage/emulated/0/Download
8条答案
按热度按时间oxcyiej71#
使用此命令获取目录:
不要忘记在
manifest.xml
中设置此权限:rpppsulh2#
现在从你的问题编辑我想更好地理解你想要什么。文件显示在下载菜单上从一个红色圆圈是那些实际上是通过
DownloadManager
下载的,虽然我给你的previos步骤将保存文件在您的下载文件夹,但他们不会显示在这个菜单上,因为他们没有下载。然而,使这一工作,您必须启动文件下载,以便在此处显示文件。以下是如何开始下载的示例:
此方法用于从URI下载,我还没有将其用于本地文件。
如果您的文件不是来自互联网,您可以尝试保存一个临时副本,并为此值获取文件的URI。
6gpjuf903#
只需使用DownloadManager下载生成的文件,如下所示:
"text/plain"
是你传递的mime类型,所以它会知道哪些应用程序可以运行下载的文件。yuvru6vn4#
我使用以下代码在我的Xamarin Droid项目中使用C#实现了这一点:
现在,您的本地文件被“下载”到您的Android设备上,用户会收到一个通知,并且一个对该文件的引用被添加到下载文件夹中。不过,请确保在写入文件系统之前向用户请求权限,否则将抛出“访问被拒绝”异常。
rkkpypqq5#
适用于API 29及以上
根据documentation,要求使用
Storage Access Framework
作为Other types of shareable content, including downloaded files
。应使用系统文件选取器将文件保存到外部存储目录。
将文件复制到外部存储示例:
kr98yfug6#
由于Oluwatumbi已正确回答了此问题,但首先需要检查是否通过以下代码为
WRITE_EXTERNAL_STORAGE
授予了权限:bnl4lu3b7#
这是使用Xamarin android API版本29的DownloadManager运行代码下载文件
abithluo8#
在API 29和30上工作
要获取目录,请执行以下操作:
在您的AndroidManifest.xml中设置此权限:
将requestLegacyExternalStorage添加到AndroidManifest.xml中的应用程序标记(适用于API 29):