【问题标题】:Get a known folder in Xamarin Android在 Xamarin Android 中获取已知文件夹
【发布时间】:2017-02-21 16:19:08
【问题描述】:

我正在使用 Xamarin 为我的论文开发一个 Android 应用程序。我需要将文件导出到我可以通过我的 PC 访问的文件夹中,不管是什么(文档、图片、音乐)。

我正在使用此代码来获取文件夹的路径:

Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);

在清单中,我已包含以下权限:

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

用其他枚举替换 MyDocuments,我得到这些路径:

Folder MyDocuments: /data/data/MagMapTimeDroid.MagMapTimeDroid/files
Folder MyMusic: /data/data/MagMapTimeDroid.MagMapTimeDroid/files/Music
Folder MyPictures: /data/data/MagMapTimeDroid.MagMapTimeDroid/files/Pictures
Folder CommonDocuments: /* EMPTY STRING */
Folder CommonPictures:  /* EMPTY STRING */
Folder ApplicationData: /data/data/MagMapTimeDroid.MagMapTimeDroid/files/.config
Folder Desktop: /data/data/MagMapTimeDroid.MagMapTimeDroid/files/Desktop

这些路径中的任何一条都不能通过 pc 访问。我正在使用带有 CyanogenMod 和 Android 5.1.1 的 Galaxy Tab 2 (7")。

所以,问题是:如何访问公用文件夹以写入文件并从电脑获取文件?

谢谢,

卢卡

【问题讨论】:

    标签: c# android file xamarin.android directory


    【解决方案1】:

    所以,问题是:如何访问公用文件夹以写入文件并从电脑获取文件?

    您可以使用 DDMS 工具从您的 android 设备获取文件,然后将文件从 android 设备拉到您的 PC,在您完成从 PC 写入此文件后,您可以再次将此文件推送到设备.

    要在VS2015中使用DDMS工具,你可以用VS2015打开你的android项目并点击图标打开Android Device Monitor(DDMS)

    那么如果你的安卓设备已经连接到PC,你可以在DDMS左侧的Devices列表中找到,选择这个设备,然后在右侧,进入表格文件资源管理器,然后找到应该安装在此 android 设备上的应用:

    在文件夹中,您应该可以找到您的文件。

    要拉取和推送文件,您可以单击此处的按钮:

    【讨论】:

    • 应用文件夹在特定文件夹中?
    • @lukemols,直接打开DDMS的文件资源管理器,你可以找到安装在这个设备上的每个应用程序的文件夹。
    • 我在这里找不到任何应用程序文件夹。 “System/App”和“System/priv-app”下只有系统应用文件夹。
    • @lukemols,将您的设备连接到您的电脑,打开ddms,然后在您的设备上调试您的应用程序,然后您可以在文件资源管理器中找到data folder,然后找到app folder,然后找到您的应用程序文件夹,你找到了吗?
    【解决方案2】:

    要获取已知或“公共”文件夹之一,您必须使用外部存储目录环境字符串。

    以下示例保存到三星 s6 的公共“我的文档”文件夹中。

        public void Save(string filename, string data)
        {
            var docPath = Android.OS.Environment.ExternalStorageDirectory.AbsolutePath;
            docPath = Path.Combine(docPath, "My Documents");
            var filepath = Path.Combine(docPath, filename);
            System.IO.File.WriteAllText(filepath, data);
        }
    

    当您查看Android.OS.Environment.ExternalStorageDirectory.AbsolutePath 返回的字符串时,它可能看起来很有趣,但实际上它正在获取设备的根公用文件夹,然后我将我的文档文件夹添加到其中,然后将文件名附加到末尾。

    如果这对你不起作用,请告诉我。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-01-03
      • 2015-06-21
      • 2013-12-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多