首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Xamarin.Forms安卓文件交换

Xamarin.Forms安卓文件交换
EN

Stack Overflow用户
提问于 2016-10-25 21:39:59
回答 1查看 194关注 0票数 0

我正在尝试在安卓桌面应用和Xamarin.Forms .Net应用之间交换文件。我真的很难获得资源和帮助,所以我希望这个问题也能总结一些东西-给其他感兴趣的用户(不仅仅是Xamarin表单)

到目前为止,我已经使用Christophe Geers' BlogFun with MTP读取了.Net C#中的文件和文件夹,因为在我的所有设备Windows File Stuff by Flauschig上都不能写入

在墙的一侧,我第一次偶然发现了Xamarin docA lib to store from pcl code,还有Plugin.Permissions

有了上面所有这些资源,我就能够在安卓(三星A5,安卓6.0)上进行阅读和写作了。对于this description on filestructure,我认为下面的代码总是会得到一个有效的路径:

代码语言:javascript
复制
public string GetExternalFolder()
    {
        GetPermission();

        var externalFolder = Path.Combine(Android.OS.Environment.ExternalStorageDirectory.Path, "Android", "data", "com.exampledom.appname", "files");
        if (!Directory.Exists(externalFolder))
            CreateFolderStructure();

        return externalFolder;
    }

GetPermission()取自Plugin.Permissions,如果没有权限就会抛出异常。

CreateFolderStructure()使用的是pcl.storage --看起来像这样。

代码语言:javascript
复制
private async void CreateFolderStructure()
    {
        try
        {
            IFolder rootFolder = await FileSystem.Current.GetFolderFromPathAsync(Path.Combine(Android.OS.Environment.ExternalStorageDirectory.Path));
            var subpaths = new[] {"Android", "data", "com.exampledom.appname", "files"};
            foreach (var dir in subpaths)
            {
                if (!string.IsNullOrEmpty(dir))
                    rootFolder = await rootFolder.CreateFolderAsync(dir, CreationCollisionOption.OpenIfExists);
            }
            Log("Folder structure created!");

        }
        catch (Exception e)
        {
            Log("Folder structure cannot be created!");
            Console.WriteLine("Failed to log! " + e.Message);
        }
    }

好的,现在问题来了:通过这种方法创建的文件夹只在我测试过的一台设备上创建(概念证明)-所有其他设备(例如三星A3,安卓6.0)什么都不会发生(证明无助的开发人员)。reboot不是解决方案。在工作的设备上也是如此-如预期的那样请求权限。其他设备上没有权限请求。

为什么在安装过程中没有创建所需的文件夹?似乎所有其他应用程序都有这样一个文件夹‘Android/data/com.exampolom.appname/files’。

我遗漏了什么?导入/导出到android似乎太难了。

EN

回答 1

Stack Overflow用户

发布于 2016-10-25 21:50:13

@smack CreationCollisionOptions.OpenIfExists真的创建了一个文件夹吗?我不这样认为。有没有CreateIfNotExists枚举?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40241597

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档