Xamarin.Forms.Android:Populating';Environment.SpecialFolder.Personal';在编译/部署时使用示例数据文件

Xamarin.Forms.Android:Populating';Environment.SpecialFolder.Personal';在编译/部署时使用示例数据文件,android,file,xamarin.forms,android-assets,Android,File,Xamarin.forms,Android Assets,我的应用程序记录来自患者监护仪的数据,并将其存储在“Environment.SpecialFolder.Personal”中的“*.dat”文件中 该应用程序还允许用户“回放”以前获得的录音 我希望在apk中包含一些示例“dat”文件。是否可以将此类文件作为“资产”包含在项目中,并在安装时将其复制到“Environment.SpecialFolder.Personal”中?将数据库复制到资产文件夹中 并将构建操作设置为AndroidAssect 您可以使用以下代码将文件从Assects文件夹

我的应用程序记录来自患者监护仪的数据,并将其存储在“Environment.SpecialFolder.Personal”中的“*.dat”文件中

该应用程序还允许用户“回放”以前获得的录音


我希望在apk中包含一些示例“dat”文件。是否可以将此类文件作为“资产”包含在项目中,并在安装时将其复制到“Environment.SpecialFolder.Personal”中?

将数据库复制到资产文件夹中

并将构建操作设置为AndroidAssect

您可以使用以下代码将文件从Assects文件夹复制到Android应用程序文件夹

// 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);
            }
        }
从下面的链接下载源文件。

更新:

您可以使用下面的代码

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,则需要运行时权限。

有关更多详细信息,请参阅下面的链接。

是的。只需在应用启动时将它们从资产复制到您的文件夹中即可。我刚刚找到了相同的解决方案!我想你怎么能告诉我如何将资产(文件)复制到Xamarin表单(Android)中的外部SD卡?有更新吗?你的问题解决了吗?如果答案对你有帮助,别忘了接受答案。