未在 Xamarin 应用程序 (Android) 中创建目录

Posted

技术标签:

【中文标题】未在 Xamarin 应用程序 (Android) 中创建目录【英文标题】:Directory is not created in Xamarin app (Android) 【发布时间】:2019-11-18 03:56:31 【问题描述】:

我需要在 Internal Storage 中创建一个目录来存储用户视频文件。

在代码的某些部分我有这个:

        var path = Environment.GetFolderPath(Environment.SpecialFolder.MyVideos);
        System.IO.Directory.CreateDirectory(path);

当我调试时,路径变量实际上是:“/data/data/com.companyname.MyApp/files/Videos”

当我浏览设备文件时,最近的目标文件夹是:“This PC\MyDevice\Internal storage\android\data”

当我浏览该文件夹时,没有创建新文件夹。我期待有 com.companyname.MyApp/files/Videos 文件夹结构,但它没有被创建,即使没有抛出异常。

我该怎么做?

谢谢

詹姆

【问题讨论】:

您是否在AndroidManifest.xml中添加了使用权限? 【参考方案1】:

你需要在清单中添加File provider

定义file_paths.xml

<paths xmlns:android="http://schemas.android.com/apk/res/android">
    <files-path name="my_images" path="images/"/>
    <files-path name="my_docs" path="docs/"/>
</paths>

并将其添加到清单中

<provider
    android:name="android.support.v4.content.FileProvider"
    android:authorities="com.mydomain.fileprovider"
    android:exported="false"
    android:grantUriPermissions="true">
    <meta-data
        android:name="android.support.FILE_PROVIDER_PATHS"
        android:resource="@xml/file_paths" />
</provider>

【讨论】:

那是给 Xamarin 的吗?我在 Resources\values 文件夹中添加了 file_paths.xml,但是在编译时,会显示一个错误提示“无效的开始标记路径”。 创建xml文件夹然后添加文件 即使现在项目编译它也不起作用。即使返回调用环境方法路径“/data/data/com.company.MyApp/files/Videos”,我也已在 /Android/data/com.company.MyApp/files/Videos 中手动创建了 Videos 文件夹。好吧,然后我使用 System.IO.File.Exists(videoPath) 来测试文件是否存在,但它不存在。我已将第一个“/data”替换为“/Android”,但也找不到该文件。我想我指向错误的文件夹。你能帮帮我吗?【参考方案2】:

最后,我对内部和外部存储有一个误解。

我在 Windows 资源管理器中看到的其实是外部存储,所以我使用了:

Path.Combine(Android.OS.Environment.ExternalStorageDirectory.AbsolutePath, Android.OS.Environment.DirectoryMovies)

这指向“电影”目录,我可以在其中保存 MP4 文件以便在 Android 设备中查看。

问候 詹姆

【讨论】:

以上是关于未在 Xamarin 应用程序 (Android) 中创建目录的主要内容,如果未能解决你的问题,请参考以下文章

AdMob广告未在Xamarin Android应用中显示

Xamarin.Android EditText事件未在设备上触发

最新 iOS 更新 (12.2) 后,本地存储中的视频未在 WebView (Xamarin.Forms) 中播放

OxyPlot 未在 Xamarin 表单中显示

本地通知未在 Android 10 中触发

故事板未在 xamarin ios 设计器中打开