如何在 Xamarin.Forms 中访问每个平台中的公共下载文件夹
Posted
技术标签:
【中文标题】如何在 Xamarin.Forms 中访问每个平台中的公共下载文件夹【英文标题】:How to access public download folder in every platform in Xamarin.Forms 【发布时间】:2017-01-23 12:24:57 【问题描述】:我需要创建一个备份服务,所以我打算在每个平台上保存 SQLite 数据库文件。 卸载应用后,保存的文件应该可用。
我打算使用 Downloads 文件夹(应该在每个平台上都可用)。
我已经创建了一个接口并在每个平台上使用以下代码:
界面:
public interface IBackupService
string GetDownloadPath();
安卓:
public string GetDownloadPath()
return android.OS.Environment.DirectoryDownloads;
UWP:
public string GetDownloadPath()
return Windows.Storage.KnownFolders.???????;
我该怎么办?有我可以使用的公共图书馆吗?
【问题讨论】:
【参考方案1】:根据KnownFolders 上的文档,似乎没有通用下载文件夹。因此,您对每个平台上的 Downloads 文件夹的假设似乎并不正确。
如果我们再深入一点,就会看到DocumentsLibrary,这似乎是实现这种目的的明显选择,但事实并非如此。微软说:
文档库不适用于一般用途。如需更多信息, 见App capability declarations。另外,请参阅以下博客文章。 Dealing with Documents: How (not) to use the documentsLibrary capability in Windows Store apps
之后的段落似乎描述了我们接下来要做的事情;
如果您的应用必须创建和更新只有您的应用使用的文件, 考虑使用应用程序的本地文件夹。获取应用程序的本地文件夹 Windows.Storage.ApplicationData.Current.LocalFolder 属性。
因此,我可以从您的问题中提取出您只想为您的应用使用存储空间,因此根据 Microsoft 的说法,Windows.Storage.ApplicationData.Current.LocalFolder
似乎是正确的选择。
【讨论】:
我可能被误解了:我需要在应用程序卸载后拥有该文件。所以使用 LocalFolder 对我来说不是一个好的解决方案。 请注意,在卸载应用程序时留下文件是不好的做法,但如果这确实是您的要求,那么这确实不是解决方案。然后您可以选择使用DocumentsLibrary
,毕竟它相当于普通PC 上的“我的文档”文件夹。但请注意微软对其施加的限制。以上是关于如何在 Xamarin.Forms 中访问每个平台中的公共下载文件夹的主要内容,如果未能解决你的问题,请参考以下文章
Xamarin.Forms:如何在 Xamarin.Forms 跨平台项目中开发具有蓝牙连接的应用程序?
如何在 Xamarin.Forms.Map 中获取当前位置或移动到当前位置