c# - Android.OS.Environment...哪个命名空间?
问题描述
我想将一些数据保存到 Anroid 设备的存储(内部/外部)中。我找到了这篇文章,他们在其中获得了带有以下行的外部存储路径:
var sdCardPath = Android.OS.Environment.ExternalStorageDirectory.Path;
看起来很公平。但我的 Visual Studio 说了以下内容:
当前上下文中不存在名称“Android”
所以我一直想知道它Android
驻留在哪个命名空间中?我尝试了很多(例如 AutoImport,但这似乎给了我错误的父级;或者按 F1 获取此处建议的文档建议的文档),但没有弄清楚如何让它工作。我必须获得哪个 NuGet-Package 才能获得此功能。还是我做错了什么?
这是 AutoImport 给我的命名空间:
Xamarin.Forms.PlatformConfiguration.Android.OS.Environment.ExternalStorageDirectory.Path;
但后来它告诉我Android没有OS
成员。查了一下,发现Xamarin.Forms.PlatformConfiguration.Android
里面根本没有成员,所以下面什么都没有。是我的Xamarin.Forms
贬低了吗?根据我的 NuGet-Packagemanager 的说法,一切都是最新的。
这些是我的项目使用的 NuGet 包:
Xamarin.Essentials
Xamarin.Forms
OxyPlot.Core
OxyPlot.Xamarin.Forms
解决方案
只需在此处输入答案,我们就可以关闭此问题...
您尝试做的问题是您需要了解关注点/抽象是分离的。Core 项目被 Android & iOS 项目引用,但 Android & iOS 项目不被 Core 项目引用。示意性地,
Core-->Android & Core-->iOS
但
Core<-x-Android, Core<-x-iOS
这是设计使然,即使您可以让它做您正在尝试的事情,但您不应该这样做。
我们知道 iOS 和 Android SDK 非常不同。因此,为了获取路径/文件名,您必须在下面执行不同的功能。您共享的代码是仅适用于 Android 本地检索路径/文件名的正确方法。
为了使它适用于 iOS 和 Android,Xamarin Forms 为我们提供了一个抽象层,它为我们处理下面的所有事情,并允许我们使用它:
string filePath = Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData);
var fileName=Path.Combine(filePath,".");
还有许多其他方法可以执行此操作,如此处的Microsoft 官方文档中所示。
推荐阅读
- python - 如何在 CSV 中收集的 HTML 标记的一部分上应用 BeautifulSoup?
- python - 如何让 pyautoGUI 的打字功能仅在特定选项卡上键入?
- go - 使用时间包在 Go 中解析时间偏移
- ssis - 如何仅从 ssis 中的多个 CSV 文件中获取最新数据而不是重复数据?
- javascript - Chrome 扩展 ExecuteScript 未触发 XRM JavaScript
- c - 如何通过支持'&'和等待(对于UNIX Shell)来实现后台运行命令?
- c++ - 如何在 C++ 中将 ostream operator<< 作为函数传递?
- c# - 使用 EF 核心 dbContext 调用方法以使用虚拟数据进行测试
- java - Spring Boot @Scheduled 的 cron 作业在创建两个作业时无法正常工作
- sed - sed 反向引用的奇怪行为