我正在尝试创建一个任何人都可以访问的文件夹。 当我尝试使用以下方式获取外部存储目录时:
var path= Android.OS.Environment.ExternalStorageDirectory.ToString();
我看到错误:
Android does not contain a definition for 'OS'.
有人可以帮助我吗?
谢谢。
答案 0 :(得分:0)
问题似乎出在我项目的类型上。我的项目是Android XAML应用(Xamarin表单)。命名空间Android.OS仅在项目Android App(Xamarin)中可用。有办法解决吗?
您可以创建一个dependency service
以便在表单上获取它。
Xamarin.Forms DependencyService简介:
创建界面:
public interface IDpendencyService
{
string GetExternalStorage();
}
Android项目上的实现可能是这样的:
public class DependencyImplementation : IDpendencyService
{
public string GetExternalStorage()
{
var path = Android.OS.Environment.ExternalStorageDirectory.ToString();
return path;
}
}
别忘了在MainActivity.cs中注册:
Xamarin.Forms.DependencyService.Register<IDpendencyService, DependencyImplementation>();
在Xamarin.forms中的用法:
private void Button_Clicked(object sender, EventArgs e)
{
var path = DependencyService.Get<IDpendencyService>().GetExternalStorage();
}
答案 1 :(得分:0)
在Xamarin.Forms,iOS和Android中。您可以这样做:
Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments)
如果您想获得一个TempFolder,可以在其中存储临时缓存:
Path.GetTempPath()
请注意,如果您要访问外部存储,则可能需要在Android清单文件中拥有一些权限
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
已经有一些很好的答案,可以更详细地解释: What is the best Environment.SpecialFolder for store application data in Xamarin.Forms?