J'ai une base de données dans mon application qui est utilisée comme ContentProvider.Android - Comment renseigner le fournisseur de contenu une seule fois sur l'application?
Il contient des valeurs de paramètres pour l'application, et lorsque j'installe l'application, je souhaite que ajoute un ensemble de valeurs codées en dur une seule fois.
Voici comment j'essaie de le faire à la minute.
if(settings.size()<= 0){
Settings s = new Settings("voipusernameTa", "xxxxxxxxx", "xxxxx",
"displayNameTa", "sip.networks.com", "sip.networks.com", "siprealmTa", 120);
addNewSettings(s);
}
Et voici la méthode addNewSettings:
private void addNewSettings(Settings _settings) {
ContentResolver cr = getContentResolver();
String w = CiceroSettings._ID + " = " + _settings.get_Id();
Log.d("ADDNEW SETTINGS", "new setting id =" + _settings.get_Id());
Cursor c = cr.query(CiceroSettings.CONTENT_URI, null, w, null, null);
Log.d("CURSOR", "cursor created");
int dbCount = c.getCount();
c.close();
if (dbCount == 0){
ContentValues values = new ContentValues();
values.put(Settings._ID, _settings.get_Id());
values.put(Settings.VOIPUSERNAME, _settings.getVoipUserName());
values.put(Settings.VOIPAUTHID, _settings.getVoipAuthId());
values.put(Settings.PASSWORD, _settings.getPassword());
values.put(Settings.VOIPDISPLAYNAME, _settings.getVoipDisplayName());
values.put(Settings.SIPPROXYSERVER, _settings.getSipProxyServer());
values.put(Settings.SIPREGISTRAR, _settings.getSipRegistrar());
values.put(Settings.SIPREALM, _settings.getSipRealm());
values.put(Settings.EXPIRESTIME, Integer.toString(_settings.getExpiresTime()));
Log.d("CURSOR", "Values assigned");
cr.insert(CiceroSettings.CONTENT_URI, values);
Log.d("CURSOR", "Values inserted");
}
}
}
Cela fonctionne cependant à chaque fois que l'application démarre, il ajoute un nouveau paramètres objet et je veux seulement à app un objet à l'installation de l'application et c'est plus.
Quelqu'un at-il une meilleure solution pour cela? Ou une raison pour laquelle mon code est défectueux?
Serait-il possible pour vous de régler la valeurs par défaut lors de la création de la table dans SQLite (dans SQLiteOpenHelper peut-être)? – ccheneson
C'est probablement la meilleure solution - en utilisant db.insert()? –
Je pensais plus dans la méthode onCreate de SQLiteOpenHelper (si vous utilisez SQLiteOpenHelper). Sinon juste après chaque fois que vous créez la table – ccheneson