我知道c#;已为 windows mobile 开发;我现在有一个无法更改约束的 android 项目;最重要的是无法在 API 16 以上运行,因为应用程序将在其上运行。这些设备已经购买。我知道这些设备的年代,以及 4.1 的年代;双手被绑。
我已经为 android 启动了一个新的 Xamarin(不是表单)项目;使用 8.1 Oreo 编译;最低版本 4.1,目标版本 8.1。我知道这并不理想,但是这样做我已经设法使许多其他需要的功能正常工作,包括相机和条形码扫描仪。将编译版本更改为 4.1 会导致许多无法编译的错误。
我正在使用实际设备上的 USB 调试来测试设备,即使它是 4.1,代码运行并且功能工作 - 相机、扫描仪等。
我一直试图创建一个文件夹,然后在该文件夹中写入/读取一个文件。我希望在插入计算机时可以通过 Windows 资源管理器访问此文件夹。
我有这样的代码来编写文件:
string FileContents = "Text file contents";
Java.IO.File SaveFolder = new Java.IO.File(Android.OS.Environment.GetExternalStoragePublicDirectory("Documents") + Java.IO.File.Separator + "FolderName");
Boolean Success = false;
if (!SaveFolder.Exists())
{
Success = SaveFolder.Mkdirs();
}
string FName = "test.txt";
string FTogether = System.IO.Path.Combine(SaveFolder.Path, FName);
Java.IO.FileWriter fw = new Java.IO.FileWriter(FTogether);
fw.Write(FileContents);
fw.Close();
SaveFolder.Dispose();
和这样的代码来读取文件:
Java.IO.File SaveFolder = new Java.IO.File(Android.OS.Environment.GetExternalStoragePublicDirectory("Documents") + Java.IO.File.Separator + "FolderName");
string FName = "test.txt";
string FTogether = System.IO.Path.Combine(SaveFolder.Path, FName);
StreamReader sr = new StreamReader(FTogether);
string FileContents = sr.ReadToEnd();
调试显示 SaveFolder 的 AbsolutePath 为 /storage/sdcard0/Documents/FolderName
我认为这是应用程序可以访问的 android 内部存储的一部分,但没有别的。
如何获取可从应用程序外部访问的文件夹?
Environment.DirectoryDocuments
无法使用,因为它在 API 16 上运行时为空。