no one can help? El lunes, 25 de febrero de 2013 23:37:27 UTC+1, saex escribió: > > Hi all > > I want that when the user press on the widget, the widget stops itself, > and when the user press again, the widget put ON his functions > > i'm using the solution of this post to achieve onClick on my widget: > Clickable > widgets in > android<http://stackoverflow.com/questions/2748590/clickable-widgets-in-android> > > The solution works fine in android 2.2 phone and android 4.1 phone but > doesn't works on Nexus One with android 2.3.6. I click on the widget but > nothing happens... > > This is my full widget class: > > public class mWidgetProvider extends AppWidgetProvider{ > public static String ACTION_WIDGET_CLICK = "ActionWidgetClick"; > public static final String ACTION_AUTO_UPDATE = "AUTO_UPDATE"; > > DecimalFormatSymbols symbols; > DecimalFormat tempDecimalFormat; > int pMaxFreq=-1; > String cCurrentFreq=null; > int freq = 0; > float usage =-1; > BufferedReader freqBufferedReader; > PowerManager pm; > RemoteViews remoteViews; > ComponentName thisWidget; > WidgetAlarm widgetAlarm; > ActivityManager manager; > > @Override > public void onDisabled(Context context) { > super.onDisabled(context); > context.stopService(new Intent(context, UpdateService.class)); > > //stop alarm > widgetAlarm = new > WidgetAlarm(context.getApplicationContext()); > widgetAlarm.stopAlarm(); > > System.out.println("XXXXX onDISABLED"); > } > > @Override > public void onDeleted(Context context, int[] appWidgetIds) { > super.onDeleted(context, appWidgetIds); > > System.out.println("XXXXX onDELETED"); > } > > @Override > public void onUpdate(Context context, AppWidgetManager > appWidgetManager, int[] appWidgetIds) { > super.onUpdate(context, appWidgetManager, appWidgetIds); > > context.startService(new Intent(context, > UpdateService.class)); > > remoteViews = new RemoteViews(context.getPackageName(), > R.layout.widget_layout); > thisWidget = new ComponentName(context, mWidgetProvider.class > ); > > //preparamos el evento para cuando el usuario presiona en el > widget, ese evento será recibido en onReceive() > Intent active = new Intent(context, mWidgetProvider.class); > active.setAction(ACTION_WIDGET_CLICK); > PendingIntent actionPendingIntent = > PendingIntent.getBroadcast(context, 0, active, 0); > remoteViews.setOnClickPendingIntent(R.id.fondo, > actionPendingIntent); > > AppWidgetManager.getInstance(context).updateAppWidget( > thisWidget, remoteViews ); > > // start alarm > widgetAlarm = new > WidgetAlarm(context.getApplicationContext()); > widgetAlarm.startAlarm(); > > System.out.println("XXXXX onUPDATE"); > } > > @Override > public void onReceive(Context context, Intent intent){ > if (intent.getAction().equals(ACTION_WIDGET_CLICK)){ > switchWidget(context); > }else if(intent.getAction().equals(ACTION_AUTO_UPDATE)){ > > symbols = new DecimalFormatSymbols(Locale.GERMAN); > symbols.setDecimalSeparator('.'); > tempDecimalFormat = new DecimalFormat("#.#", symbols); > > > pm = (PowerManager) > context.getSystemService(Context.POWER_SERVICE); > remoteViews = new RemoteViews(context.getPackageName(), > R.layout.widget_layout); > thisWidget = new ComponentName(context, > mWidgetProvider.class ); > > if (pm.isScreenOn()){ > /* > here i do some work to update the textviews > of the widget > */ > > > AppWidgetManager.getInstance(context).updateAppWidget( thisWidget, > remoteViews ); > System.out.println("XXXXX UPDATING WIDGET"); > } > }else{ > super.onReceive(context, intent); > } > > System.out.println("XXXXX onRECEIVE: "+intent.getAction()); > } > > @Override > public void onEnabled(Context context) { > super.onEnabled(context); > > System.out.println("XXXXX onENABLED"); > } > > public void switchWidget(Context context){ > symbols = new DecimalFormatSymbols(Locale.GERMAN); > symbols.setDecimalSeparator('.'); > tempDecimalFormat = new DecimalFormat("#.#", symbols); > > remoteViews = new RemoteViews(context.getPackageName(), > R.layout.widget_layout); > thisWidget = new ComponentName(context.getPackageName(), > mWidgetProvider.class.getName()); > widgetAlarm = new > WidgetAlarm(context.getApplicationContext()); > if (isMyServiceRunning(context)==true){ //si el widget está > encendido la apagamos > context.stopService(new Intent(context, > UpdateService.class)); > widgetAlarm.stopAlarm(); > remoteViews.setTextViewText(R.id.freq,"HERE I CHANGE THE > VALUE"); > } > else{ //si el widget está apagado lo encendemos > context.startService(new Intent(context, > UpdateService.class)); > widgetAlarm.startAlarm(); > remoteViews.setTextViewText(R.id.freq,"HERE I > CHANGE THE VALUE"); > } > > AppWidgetManager.getInstance(context).updateAppWidget(thisWidget,remoteViews); > } > > private boolean isMyServiceRunning(Context context) { > manager = (ActivityManager) > context.getSystemService(Context.ACTIVITY_SERVICE); > for (RunningServiceInfo service : > manager.getRunningServices(Integer.MAX_VALUE)) { > if > (UpdateService.class.getName().equals(service.service.getClassName())) { > return true; > } > } > return false; > } > > public void getpMaxFreq(){ > int freq = 0; > try{ > //HERE I DO SOME WORK > } > catch (Exception e){e.printStackTrace();} > } > } > > > PD: i tryed also putting the intent in onEnabled() function, with the > same result... didn't work on Nexus One 2.3.6 > > thanks > >
-- -- You received this message because you are subscribed to the Google Groups "Android Developers" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [email protected] For more options, visit this group at http://groups.google.com/group/android-developers?hl=en --- You received this message because you are subscribed to the Google Groups "Android Developers" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. For more options, visit https://groups.google.com/groups/opt_out.

