繁体   English   中英

Xamarin.Forms Android 不包含 Content 的定义

[英]Xamarin.Forms Android doesn't contain a definition for Content

我正在尝试在外部存储中创建/打开/写入一个 .txt 文件,但我无法使用“ Android.Content.Context.GetExternalFilesDir ”设置路径。

这是我的确切代码:

string sourceFile = Path.Combine(Android.Content.Context.GetExternalFilesDir(null).AbsolutePath, "myFile.txt");
File.Create(sourceFile);

错误信息是:

Android 不包含 Content 的定义

我应该怎么办?
我不知道如何修改程序集

当然,如果您创建一个 Xamarin.Android 项目,您可以在其中轻松使用 android api。

此外,您还可以使用依赖服务调用平台方法。 您可以查看以下链接,该链接显示了如何使用它来操作 android 文件夹。

链接: Xamarin 表单:如何在设备外部存储中创建文件夹和文件?

然后你需要在AndroidManifest.xml中添加读写外部存储权限:

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

并通过权限请求授予应用程序两个权限。 您可以检查以下情况。

案例: 即使设置了权限也无法写入 Android 外部存储

此外,您需要将SaveFile(string fileName)方法放入 AccessFileImplement 类中。

我仍然在同一点上,这就是我所做的:在Android Project中,我使用此功能创建了一个类“Storage”( Storage.cs ):

 public void SaveFile(string fileName)
    {
        string path = Android.OS.Environment.ExternalStorageDirectory.AbsolutePath;
        string filePath = System.IO.Path.Combine(path, fileName);
        if (!System.IO.File.Exists(filePath))
        {
            using (System.IO.StreamWriter writer = new System.IO.StreamWriter(filePath, true))
            {
                writer.WriteLine(DateTime.Now.ToString() + ": " + "Example .txt created using Xamarin.");
            }
        }
        else
        {
            System.IO.File.Delete(filePath);
            using (System.IO.StreamWriter writer = new System.IO.StreamWriter(filePath, true))
            {
                writer.WriteLine(DateTime.Now.ToString() + ": " + "Example .txt created using Xamarin.");
            }
        }
    }

然后在Forms ProjectMainPage.xaml.cs 中,我添加了一个带有以下代码的接口:

public interface IAccessFile
    {
        void SaveFile(string fileName);
    }

然后在主代码的同一个项目( MainPage.xaml.cs )中,我添加了:

DependencyService.Get<IAccessFile>().SaveFile("workingHours.txt");

同样在AndroidManifest.xml中,我添加了权限:

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

我没有在我的类 Storage 中的 Android 项目中添加的唯一代码(在函数之前)是:

[assembly: Xamarin.Forms.Dependency(typeof(AccessFileImplement))]
namespace XamarinFirebase.Droid
{
    public class AccessFileImplement : IAccessFile

因为即使使用 using 也不起作用

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM