J'ai suivi ce tutoriel dans son intégralité, sur la manière de stocker des données dans une base de données locale. Sur iOS tout fonctionne bien, malheureusement sur Android j'obtiens une exception lors de la création d'une table dans mon fichier de base de données. La méthode pour créer la table est la suivante :
public CalcDatabase(string dbPath)
{
database = new SQLiteAsyncConnection(dbPath);
database.CreateTableAsync<Calculation>().Wait();
}
Et ma classe personnalisée pour obtenir le chemin de la base de données sur Android est la suivante :
public class LocalFileHelper : IFileHelper
{
public string GetLocalFilePath(string filename)
{
var path = Environment.GetFolderPath(Environment.SpecialFolder.Personal);
path = Path.Combine(path, filename);
if(!Directory.Exists(path))
{
Directory.CreateDirectory(path);
}
return path;
}
}
Voici l'erreur que je reçois de SQLite :
Impossible d'ouvrir le fichier de la base de données : /data/user/0/com.companyname.XX/files/Calculation.db3 (CannotOpen)
J'ai essayé de cibler plusieurs API différentes, j'ai essayé de nettoyer et de reconstruire ma solution, et j'ai essayé de réinstaller les paquets NuGet SQLite-net-pcl dans toute la solution. Rien ne fonctionne.
J'ai lu que cela avait à voir avec les autorisations, mais je trouve étrange que le tutoriel officiel de Microsoft ne couvre pas ce problème, s'il existe.