Xamarin Forms-创建任何人都可以访问的可访问文件夹

时间:2020-03-08 12:14:21

标签: android xamarin.forms

我正在尝试创建一个任何人都可以访问的文件夹。 当我尝试使用以下方式获取外部存储目录时:

var path= Android.OS.Environment.ExternalStorageDirectory.ToString();

我看到错误:

Android does not contain a definition for 'OS'.

有人可以帮助我吗?

谢谢。

2 个答案:

答案 0 :(得分:0)

问题似乎出在我项目的类型上。我的项目是Android XAML应用(Xamarin表单)。命名空间Android.OS仅在项目Android App(Xamarin)中可用。有办法解决吗?

您可以创建一个dependency service以便在表单上获取它。

Xamarin.Forms DependencyService简介:

https://docs.microsoft.com/en-us/xamarin/xamarin-forms/app-fundamentals/dependency-service/introduction

创建界面:

 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?

相关问题