簡體   English   中英

Xamarin.Forms.Android:在編譯/部署時使用示例數據文件填充“Environment.SpecialFolder.Personal”

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM