Photo par pxhere.com

Copier des assets dans l'application Xamarin.Android

Parfois, quand vous commencez une application toutes les données ne sont pas encore prêtes, mais vous avez besoin de commencer à développer votre application.

Posted by Damien Aicheh on April 14, 2018 · 2 mins

Parfois, quand vous commencez une application toutes les données ne sont pas encore prêtes, mais vous avez besoin de commencer à développer votre application.

Dans ce tutoriel, nous sommes dans la situation où nous avons besoin d’utiliser les données d’une base de données, qui sera rempli par l’utilisateur quand il utilisera l’application. Ainsi, pour des questions de développement nous devons embarquer cette base de données dans l’application.

Pour rendre cette base de données accessible depuis l’application nous avons besoin de la déployer dans le dossier courant de l’application afin de pouvoir l’utiliser.

Tout d’abord, dans votre projet Xamarin.Android vous aurez besoin d’ajouter votre base de données dans le dossier Assets. La mienne s’appelle database.db3. Puis dans votre IDE, faites un clic droit dessus puis Properties et assurez-vous que le champ Build Action est bien défini à AndroidAsset. Sans cette option paramétrée correctement la suite ne fonctionnera pas.

Maintenant dans votre projet Xamarin.Android, dans une Activité ajoutez cette méthode de type Task :

public async Task DeployDatabaseFromAssetsAsync()
{
    var databaseName = "database.db3";
    
    // Android application default folder.
    var appFolder = Environment.GetFolderPath(Environment.SpecialFolder.Personal);
    var dbFile = Path.Combine(appFolder, databaseName);
    
    // 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);
        }
    }
}

Vous pouvez appeler cette Task au lancement de votre application et votre base de données sera déployée. Le mieux à faire est de créer un service qui sera implémenté dans chaque plateforme et d’appeler cette méthode en utilisant l’injection de dépendance.

Vous trouverez un exemple de code sur ce répertoire Github.

Happy coding !

Vous avez aimé ce tutoriel ? Laissez une étoile sur le répertoire Github associé !

N'hésitez pas à me suivre sur pour ne pas rater mon prochain tutoriel !