gpt4 book ai didi

xamarin - 使用Environment访问Android特殊文件夹路径

转载 作者:行者123 更新时间:2023-12-02 18:43:43 25 4
gpt4 key购买 nike

我想将日志保存到可以使用 Windows 资源管理器访问的文件夹中。例如,我想在以下路径中创建日志

此电脑\Galaxy A5 (2017)\手机\Android\data\MyApp\files

所以我尝试使用环境变量...我得到诸如

/数据/用户/...

但在这里我看不到我创建的文件(使用代码我可以访问路径,但我想在资源管理器中查看)。

如何使用代码创建如上所述的路径?

当我尝试这段代码时

var finalPath2 = Android.OS.Environment.GetExternalStoragePublicDirectory
(Android.OS.Environment.DataDirectory.AbsolutePath);

I get the path "/storage/emulated/0/data"

如果我使用代码

   var logDirectory =Path.Combine(System.Environment.GetFolderPath
(System.Environment.SpecialFolder.ApplicationData),"logs");

我得到以下路径:

/data/user/0/MyApp/files/.config/logs

var logDirectory =Path.Combine(System.Environment.GetFolderPath
(System.Environment.SpecialFolder.MyDocuments),"logs");

"/data/user/0/IM.OneApp.Presentation.Android/files/logs"

但不幸的是我无法通过资源管理器访问此文件夹....

此电脑\Galaxy A5 (2017)\手机\Android\data\MyApp\files

那么如何在c#中使用环境找到这个路径呢?

更新:

当我对以下路径进行硬编码时,它会在我想要的位置创建文件..

logDirectory = "/storage/emulated/0/Android/data/MyApp/files/logs";

是否有创建此路径的环境?我可以组合 2 个环境并进行一些字符串处理来创建此路径。但也许有更简单的方法?

最佳答案

您正在寻找GetExternalFilesDir的根,只需传递一个null:

示例:

var externalAppPathNoSec = GetExternalFilesDir(string.Empty).Path;

注意:这是一个基于 Context 的实例方法,您可以通过 Android 应用程序上下文、Activity 等访问它...(请参阅下面的 Android Context 文档链接)

  • Shared storage may not always be available, since removable media can be ejected by the user. Media state can be checked using Environment.getExternalStorageState(File).

  • There is no security enforced with these files. For example, any application holding Manifest.permission.WRITE_EXTERNAL_STORAGE can write to these files.

回复:https://developer.android.com/reference/android/content/Context#getExternalFilesDir(java.lang.String)

关于xamarin - 使用Environment访问Android特殊文件夹路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54126671/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com