Olivier69 Posté(e) 24 février 2010 Share Posté(e) 24 février 2010 Bon je m'explique et après je donne le code à rectifier si besoin. J'écris un widget qui affiche des SMS. Pas de problème, en particulier celui à la position i. Maintenant pour rendre tout ça interactif, je pose un bouton Next, qui est censé permettre d'afficher le SMS a la position i+1. en l'occurrence, après avoir vérifié que mon widget affichais bien quelque chose pour la position 0 et la position 1, j'ai remarqué que mon bouton Next ne marche pas. Quand j'appuie sur le bouton je lance une intention. Sans doute ai-je oublié une permission ou un "extends", mais je ne trouve pas où, quand, comment... Je précise quand même que je n'ai pas de problème pour le compiler, donc il ne s'agit pas d'une erreur de syntaxe ou d'import... voici mon code: public class MySMSwidget extends AppWidgetProvider { private int sms_id=0; private static final String Next_BUTTON = new String("android.MySMSwidget.action.Next_BUTTON"); public void onReceive (Context context, Intent intent){ final String action = intent.getAction(); if (Next_BUTTON.equals(action)) { sms_id = sms_id+1; } else { super.onReceive(context, intent); } } public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) { Cursor c = context.getContentResolver().query(Uri.parse("content://sms/inbox"), null, null ,null,null); String body = null; String number = null; String date = null; c.moveToPosition(sms_id); body = c.getString(c.getColumnIndexOrThrow("body")).toString(); number = c.getString(c.getColumnIndexOrThrow("address")).toString(); date = c.getString(c.getColumnIndexOrThrow("date")).toString(); c.close(); RemoteViews updateViews = new RemoteViews(context.getPackageName(), R.layout.widget_layout); updateViews.setTextColor(R.id.text, 0xFF000000); updateViews.setTextViewText(R.id.text,date+'\n'+number+'\n'+body); ComponentName thisWidget = new ComponentName(context, MySMSwidget.class); appWidgetManager.updateAppWidget(thisWidget, updateViews); Intent Next = new Intent(); Next.setAction(Next_BUTTON); PendingIntent pendingIntent = PendingIntent.getBroadcast(context, 0, Next, 0); RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.widget_layout); views.setOnClickPendingIntent(R.id.next, pendingIntent); } } Lien vers le commentaire Partager sur d’autres sites More sharing options...
Recommended Posts
Archivé
Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.