未在 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) 中创建目录的主要内容,如果未能解决你的问题,请参考以下文章
Xamarin.Android EditText事件未在设备上触发