如何解决如何从我的视图模型类访问 xamarin 表单项目中 android 的资产文件?
我有一个 xamarin 表单解决方案,其中我有 3 个项目,xamarin 表单项目、android 项目和 iOS 项目。我的 andoird 项目的资产文件夹中有一个文件,我想将此文件从资产复制到个人文件夹,以便我可以对其进行编辑。
我读过一些地方说我可以使用 AssetManager,但是虽然我在 xamarin 表单项目的视图模型中使用了 Xamarin.Forms,但我无权访问 Xamarin.Forms.Context,这似乎是成为处理资产的方式。
那么如何将文件从资产文件夹复制到我的视图模型中的个人文件夹?
谢谢。
解决方法
您可以使用 DependencyService。
1.创建接口
public interface ISaveFileService
{
void SaveFile();
}
2.实现各个平台的接口(例如android)
在android项目中(可能需要请求一些权限):
public class SaveFileService : ISaveFileService
{
public SaveFile()
{
var filPath = System.IO.Path.Combine(System.Environment.GetFolderPath(System.Environment.SpecialFolder.Personal),"YOUR_DATABASENAME");
if (!File.Exists(filPath))
{
try
{
using (var fileAssetStream = Android.App.Application.Context.Assets.Open("your file"))
using (var fileStream = new FileStream(filPath,FileMode.OpenOrCreate))
{
var buffer = new byte[1024];
int b = buffer.Length;
int length;
while ((length = await fileAssetStream.ReadAsync(buffer,b)) > 0)
{
await fileStream.WriteAsync(buffer,length);
}
fileStream.Flush();
fileStream.Close();
fileAssetStream.Close();
}
}
catch (Exception ex)
{
//Handle exceptions
}
}
}
}
3.在您的表单项目中调用它,例如:
DependencyService.Get<ISaveFileService>().SaveFile();
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。