Bonjour à tous !

Je me permet de solliciter votre aide sur l'une de mes applications Android.

Le topo de l'application :
Je dispose d'une base SQL sur un serveur web qui contient des données sur la température extérieur, l'humidité extérieur ainsi que la qualité de l'air extérieur. Des données y sont stockées toutes les 20 min automatiquement en fonction de relevés.
L'application Android récupère ces données et affiche différents graphiques.
L'appel à cette base de donnée s'effectue aujourd'hui dans la classe MainActicity et est 100% opérationnel.

Je souhaite aujourd'hui créer un widget sur l'écran principal de mon téléphone pour afficher la dernière valeur enregistrée dans la base de donnée.
Et je sèche complétement. Je suis en réalité un novice sur Android.

Le code du widget aujourd'hui :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
/**
 * Implementation of App Widget functionality.
 */
public class NewAppWidget extends AppWidgetProvider
{
 
 
 
 
    static void updateAppWidget(Context context, AppWidgetManager appWidgetManager,
                                int appWidgetId)
    {
 
        Intent intent = new Intent(context, MainActivity.class);
        PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, intent, 0);
 
 
        String T_Ext_Value2 = "26";
        String H_Ext_Value2 = "53";
        String A_Ext_Value2 = "212";
        String Timer2 = "2019-07-06 14:13:20";
 
        // Construct the RemoteViews object
        RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.new_app_widget);
        views.setTextViewText(R.id.appwidget_Text, T_Ext_Value2);
        views.setTextViewText(R.id.appwidget_Hext, H_Ext_Value2);
        views.setTextViewText(R.id.appwidget_Aext, A_Ext_Value2);
        views.setTextViewText(R.id.appwidget_Timestamp, Timer2);
        views.setOnClickPendingIntent(R.id.appwidget_button, pendingIntent);
 
 
 
        // Instruct the widget manager to update the widget
        appWidgetManager.updateAppWidget(appWidgetId, views);
    }
 
    @Override
    public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds)
    {
        // There may be multiple widgets active, so update all of them
        for (int appWidgetId : appWidgetIds)
        {
            updateAppWidget(context, appWidgetManager, appWidgetId);
        }
    }
 
    @Override
    public void onEnabled(Context context)
    {
        // Enter relevant functionality for when the first widget is created
    }
 
    @Override
    public void onDisabled(Context context)
    {
        // Enter relevant functionality for when the last widget is disabled
    }
}
Ce qui donne sur mon écran de téléphone :

Nom : widget.JPG
Affichages : 117
Taille : 25,3 Ko

Avec des valeurs en dur --> OK
Mon problème c'est pour afficher les valeurs réelles contenues dans la base de données.

Je sèche sur la méthode :
- Est-ce que le widget doit appeler directement la base de donnée ?
- Est-ce que le widget doit appeler une fonction utilisé dans la class MainActivity pour récupérer les data ?
- Est-ce que c'est à la class MainActivity de transmettre les data au widget ? Dans ce cas quid de la MAJ des données ?

Bref je suis un peu perdu.

Quelle est la bonne méthode ?

Merci d'avance,

Evo