1

Besoin d'aide pour utiliser des bases de données dans Android.Insertion de données dans la base de données du service d'intention de veille dans Android

J'essaie d'insérer des données dans un db fourni par MoEngage de doWakefulWork() à l'intérieur WakefulIntentService.

Voilà ma fonction pour insérer des données dans db:

private void addToDb(Bundle extras) { 
    String msgDetails = "my string"; 
    ContentValues values = new ContentValues(); 
    if (null != msgDetails) { 
     values.put("msg", msgDetails); 
    } 

    Uri newRecord = App.context.getContentResolver().insert(MoEDataContract.MessageEntity.getContentUri(App.context), 
      values); 
    App.context.getContentResolver().notifyChange(newRecord, (ContentObserver) null); 

    if (MoEHelperUtils.isDebugEnabled()) { 
     if (null != newRecord) { 
      Log.d(MoEHelper.TAG, "PushMessagingListener: added new record with entry: " + newRecord); 
     } else { 
      Log.d(MoEHelper.TAG, "PushMessagingListener: FAILED to add new record with entry: "); 
     } 
    } 
} 

Cependant, quand j'ouvre l'application et essayer d'interroger la base de données, le curseur retourne 0 nombre.

Si j'essaie de lancer une requête juste après avoir ajouté des valeurs à doWakefulWork() uniquement, le curseur affiche la valeur dans la base de données.

Cursor cursor = MoEController.getAllMessages(App.context); 

Est-ce que je manque quelque chose ici? Toute aide serait appréciée. Merci!

Répondre

0

Voici des exemples sur la façon d'insérer des données sur un Android par ContentValue:

Le contexte peut être nul ou non. J'ai trouvé cette possibilité car le contexte est null dans l'exemple de code sur l'insertion de données dans Github. Donc, j'ai supposé que peut-être le 'App' utilise le modèle Singleton.

Vous pouvez consulter ce link.

Cela ne fonctionnera pas si votre SQLiteOpenHelper est utilisé par un fournisseur de contenu, parce que est appelée avant onCreate() de l'application onCreate() du contenu du fournisseur.