[英]Xamarin Android save files, Environment.Specialfolder does not exist
[英]Xamarin.Forms.Android: Populating 'Environment.SpecialFolder.Personal' with sample data files at compilation/deployment
我的应用程序记录来自患者监视器的数据,并将其存储在“Environment.SpecialFolder.Personal”中的“*.dat”文件中。
该应用程序还允许用户“回放”以前获得的录音。
我希望在 apk 中包含一些示例“dat”文件。 是否可以在项目中包含“资产”等文件,并在安装时将它们复制到“Environment.SpecialFolder.Personal”?
将数据库复制到 Assets 文件夹中。
并将 Build Action 设置为 AndroidAssect。
您可以使用以下代码将文件从 Assects 文件夹复制到 Android Application 文件夹。
// Android application default folder.
var appFolder = System.Environment.GetFolderPath(System.Environment.SpecialFolder.Personal);
var dbFile = Path.Combine(appFolder, "database.db3");
// Check if the file already exists.
if (!File.Exists(dbFile))
{
using (FileStream writeStream = new FileStream(dbFile, FileMode.OpenOrCreate, FileAccess.Write))
{
// Assets is comming from the current context.
await Assets.Open(databaseName).CopyToAsync(writeStream);
}
}
从下面的链接下载源文件。 https://github.com/damienaicheh/CopyAssetsProject
更新:
您可以使用下面的代码。
var assetName = "someasset.jpg";
var outputName = Path.Combine(Android.OS.Environment.DirectoryDownloads,
assetName);
using (var assetStream = context.Assets.Open(assetName))
using (var fileStream = new FileStream(outputName, FileMode.CreateNew))
{
await assetStream.CopyToAsync(fileStream);
}
如果您的设备高于 Android6.0,则需要运行时权限。 https://docs.microsoft.com/en-us/samples/xamarin/monodroid-samples/android-m-runtimepermissions/
欲知更多详情,请参阅以下链接。 如何在我的设备上保存资产中的文件? Xamarin
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.