@Arnold, you created 2 PendingIntent which ...
PendingIntent pending1 = PendingIntent.getActivity(context,0,intent1, 0); PendingIntent pending2 = PendingIntent.getActivity(context, 0, intent2, 0);
Where PendingIntent.getActivity (context context, int requestCode, Intent intent, int flags) has 4 parameters. You must send different " requestCode " for different PendingIntents.
Your code should be ....
PendingIntent pending1 = PendingIntent.getActivity(context,0,intent1, PendingIntent.FLAG_UPDATE_CURRENT); PendingIntent pending2 = PendingIntent.getActivity(context, 1, intent2, PendingIntent.FLAG_UPDATE_CURRENT);
in the main class you need to create this ...
String value; @Override public void onReceive(Context context, Intent intent) { // TODO Auto-generated method stub Bundle b=intent.getExtras(); try{ value=b.getString("key"); } catch (Exception e) { // TODO: handle exception } super.onReceive(context, intent); }
with code onUpdate ....
@Override public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) { // Get all ids ComponentName thisWidget = new ComponentName(context, main.class); int[] allWidgetIds = appWidgetManager.getAppWidgetIds(thisWidget); for (int widgetId : allWidgetIds) { // Create some random data RemoteViews remoteViews = new RemoteViews(context.getPackageName(), R.layout.main); // Register an onClickListener for 1st button Intent intent = new Intent(context, main.class); intent.setAction(AppWidgetManager.ACTION_APPWIDGET_UPDATE); intent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_IDS,allWidgetIds); intent.putExtra("key", "1st Button"); PendingIntent pendingIntent = PendingIntent.getBroadcast(context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT); remoteViews.setOnClickPendingIntent(R.id.button1, pendingIntent); // Register an onClickListener for 2nd button............ Intent intent2 = new Intent(context, main.class); intent2.setAction(AppWidgetManager.ACTION_APPWIDGET_UPDATE); intent2.putExtra(AppWidgetManager.EXTRA_APPWIDGET_IDS,allWidgetIds); intent2.putExtra("key", "2nd Button"); PendingIntent pendingIntent2 = PendingIntent.getBroadcast(context, 1, intent2, PendingIntent.FLAG_UPDATE_CURRENT); remoteViews.setOnClickPendingIntent(R.id.button2, pendingIntent2); appWidgetManager.updateAppWidget(widgetId, remoteViews); } }
Then you can check if value = 1st Button or value = 2nd Button to find out which button was pressed. It should work ... IF this does not work, please let me know what the problem is ...