IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Android Discussion :

Introduction à la création d'AppWidget sous Android [Tutoriel]


Sujet :

Android

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Rédacteur
    Avatar de Viish
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2009
    Messages
    427
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2009
    Messages : 427
    Par défaut Introduction à la création d'AppWidget sous Android
    Bonsoir,

    Voici un nouveau tutoriel ayant pour objectif de vous apprendre à créer des AppWidget pour Android.

    Si jamais vous avez des questions ou des remarques, n'hésitez pas à en faire part.

  2. #2
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 6
    Par défaut
    Citation Envoyé par Viish Voir le message
    Bonsoir,

    Voici un nouveau tutoriel ayant pour objectif de vous apprendre à créer des AppWidget pour Android.

    Si jamais vous avez des questions ou des remarques, n'hésitez pas à en faire part.

    Super !!

    Merci.

  3. #3
    Membre confirmé
    Inscrit en
    Novembre 2010
    Messages
    154
    Détails du profil
    Informations forums :
    Inscription : Novembre 2010
    Messages : 154
    Par défaut
    Bravo et merci.

  4. #4
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2009
    Messages
    169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2009
    Messages : 169
    Par défaut
    Bonsoir,
    J'ai un problème pour la fonction onReceive, je ne comprend pas pourquoi je ne passe jamais dedans
    J'ai vérifié X fois et je ne vois toujours pas ce qui change par rapport à votre code. Je vous montre le mien :
    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
     
    package eaks.Alidhan;
     
    public class WidgetMessagerie extends AppWidgetProvider 
    {
    	public final static String TAG = "WidgetMessagerie";
    	public static final String ACTION_LANCER_APPLICATION = "eaks.Alidhan.ACTION_LANCER_APPLICATION"; 
     
    	@Override
    	public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) 
    	{
    		final int N = appWidgetIds.length;
    		SharedPreferences sp = (PreferenceManager.getDefaultSharedPreferences(context));
    		for (int i = 0; i < N; i++) 
    		{
    			int appWidgetId = appWidgetIds[i];
    			updateAppWidget(context, appWidgetManager, appWidgetId, sp);
    		}
    	}
     
    	static void updateAppWidget(Context context, AppWidgetManager appWidgetManager, 
    			int appWidgetId, SharedPreferences sp) 
    	{
    		RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.widgetmessagerie);
    		if (sp.getBoolean("serviceMessageEtat", false))
    			views.setTextViewText(R.id.hello_world_widget, "Oui");
    		else
    			views.setTextViewText(R.id.hello_world_widget, "Non");		
    		appWidgetManager.updateAppWidget(appWidgetId, views);
    		Intent intent = new Intent(context, WidgetMessagerie.class);
    		intent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, appWidgetId);
    		intent.setAction(ACTION_LANCER_APPLICATION);
     
    		PendingIntent pendingIntent = PendingIntent.getActivity(context, 10, intent, 0);
    		views.setOnClickPendingIntent(R.id.hello_world_widget, pendingIntent);
    		appWidgetManager.updateAppWidget(appWidgetId, views);
    	}
     
    	@Override
    	public void onReceive(Context context, Intent intent) 
    	{
    	    super.onReceive(context, intent);
    	    Log.i(TAG, "avant	");
    	    if (intent.getAction().equals(ACTION_LANCER_APPLICATION))
    	    {
    	    	Log.i(TAG, "message	");
    	        Toast.makeText(context, "YCLIQUE", Toast.LENGTH_SHORT).show();
    	    }
    	}
     
     
    }
    Mon mannifest :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
      	 <receiver 
        	 	android:name="WidgetMessagerie"  
        	 	android:label="Ali Droid Notification messagerie"
        	 >
        	 	<intent-filter>
    	    	 	<action android:name="eaks.Alidhan.ACTION_LANCER_APPLICATION" />
    				<action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
    			</intent-filter>
    			<meta-data android:name="android.appwidget.provider"
    				android:resource="@xml/widgetprovider" 
    			/>
     
        	 </receiver>
    Et ce que me sort le LOG :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    10-27 23:24:51.154: INFO/ActivityManager(51): Starting activity: Intent { act=eaks.Alidhan.ACTION_LANCER_APPLICATION flg=0x10000000 cmp=eaks.Alidhan/.WidgetMessagerie bnds=[80,151][160,199] (has extras) }
    10-27 23:24:51.345: INFO/ActivityManager(51): Starting activity: Intent { act=eaks.Alidhan.ACTION_LANCER_APPLICATION flg=0x10000000 cmp=eaks.Alidhan/.WidgetMessagerie bnds=[80,151][160,199] (has extras) }
    10-27 23:24:51.594: INFO/ActivityManager(51): Starting activity: Intent { act=eaks.Alidhan.ACTION_LANCER_APPLICATION flg=0x10000000 cmp=eaks.Alidhan/.WidgetMessagerie bnds=[80,151][160,199] (has extras) }
    10-27 23:24:51.744: INFO/ActivityManager(51): Starting activity: Intent { act=eaks.Alidhan.ACTION_LANCER_APPLICATION flg=0x10000000 cmp=eaks.Alidhan/.WidgetMessagerie bnds=[80,151][160,199] (has extras) }
    Les logs la sont quand je clique sur mon Widget donc a mon avis il lance bien l'intent mais il n'arrive probablement pas à trouver l'action.

    D'avance merci à ceux qui prendront le temps de me lire et d’éventuellement m'aider

  5. #5
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2009
    Messages
    169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2009
    Messages : 169
    Par défaut
    Bonsoir,
    J'ai toujours un problème
    Quand je clique sur mon widget le log me sort ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    10-27 23:24:51.154: INFO/ActivityManager(51): Starting activity: Intent { act=eaks.Alidhan.ACTION_LANCER_APPLICATION flg=0x10000000 cmp=eaks.Alidhan/.WidgetMessagerie bnds=[80,151][160,199] (has extras) }
    Mais la méthode onReceive n'est pas appelée ! Si je change l'action pour
    android.appwidget.action.APPWIDGET_UPDATE ca ne marche toujours pas.
    Il passe dans le onReceive qu'au début et je ne sais vraiment pas pourquoi.

    Un peu d'aide serait la bienvenue.

  6. #6
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2009
    Messages
    169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2009
    Messages : 169
    Par défaut
    Désolé pour le triple poste mais je viens de trouver la solution:
    Il faut remplacer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    PendingIntent pendingIntent = PendingIntent.getActivity(context, 10, intent, 0);
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    PendingIntent pendingIntent = PendingIntent.getBroadcast(context, 10, intent, 0);
    et ça marche mieux (chez moi en tout cas).

Discussions similaires

  1. Création d'une boussole sous Android
    Par bydavy dans le forum Android
    Réponses: 14
    Dernier message: 23/03/2014, 04h37
  2. Création d'une appli style centrafuse sous Android
    Par jerem001_5 dans le forum Android
    Réponses: 0
    Dernier message: 24/10/2010, 16h58

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo