1

I have create a widget in android , whenever i click on Widget TextView one service get starts but at the same time i want to change the icon which is shown on the right side.

I can set a onclick over Widget TextView using

remoteViews.setOnClickPendingIntent(R.id.widgetTxt,pendingIntent);

but i don't know where i can change the icon when the TextView get clicks

image enter image description here

@Override
        public void onUpdate(Context context, AppWidgetManager appWidgetManager,int[] appWidgetIds) {

                        // Here i am trying to set a onclick over TextView
    Intent intent = new Intent(context,MyService.class);
            PendingIntent pendingIntent = PendingIntent.getService(context,0 , 
                    intent, 0);

            remoteViews.setOnClickPendingIntent(R.id.MyWidgetTxt,pendingIntent);

    }

When an icon itself gets clicked , it changes too and i have set its code in onReceive

Hunt
  • 8,215
  • 28
  • 116
  • 256
  • There are guide for [App Widgets](http://developer.android.com/guide/topics/appwidgets/index.html), and [onReceive()](http://developer.android.com/reference/android/appwidget/AppWidgetProvider.html#onReceive(android.content.Context,%20android.content.Intent)) method. –  Mar 24 '12 at 10:56

1 Answers1

3

try this :

In manifest.xml

 <receiver android:name="TestwidgetProvider"
            android:label="@string/widget_title" android:exported="false" android:icon="@drawable/test">
            <intent-filter>
                <action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
                <action android:name="com.imranandroid.demo.ACTION_ON_ImG_CLICK"/>
                <action android:name="android.appwidget.action.APPWIDGET_DELETED"/>
            </intent-filter>
            <meta-data android:name="android.appwidget.provider"
                android:resource="@xml/widget_info" />
        </receiver>

In AppWidgetProvider.java :

  public class TestwidgetProvider extends AppWidgetProvider {
        public static final String TAG_IMAGE_CLICK = "com.imranandroid.demo.ACTION_ON_ImG_CLICK";
        public static RemoteViews rview;
public static int ii=0;
        @Override
        public void onUpdate(Context paramContext, AppWidgetManager appWidgetManager, 
                int[] appWidgetIds){
            //REMOVE YOUR CODE FROM HERE
            updateWidgetState(paramContext, "");    
        }
        @Override
        public void onReceive(Context paramContext, Intent paramIntent)
          {
             String str = paramIntent.getAction();
            if (paramIntent.getAction().equals(TAG_IMAGE_CLICK)) {
                updateWidgetState(paramContext, str);   
            }
            else
            {
              super.onReceive(paramContext, paramIntent);
            }
          }
         static void updateWidgetState(Context paramContext, String paramString)
          {
            RemoteViews localRemoteViews = buildUpdate(paramContext, paramString); //CALL HERE
            ComponentName localComponentName = new ComponentName(paramContext, TestwidgetProvider.class);
            AppWidgetManager.getInstance(paramContext).updateAppWidget(localComponentName, localRemoteViews);
          }
     private static RemoteViews buildUpdate(Context paramContext, String paramString)
      {
         rview = new RemoteViews(paramContext.getPackageName(), R.layout.widget_layoutmain);
         Intent active = new Intent(paramContext, TestwidgetProvider.class); //YOUR WIDGET NAME
         active.setAction(TAG_IMAGE_CLICK);
         PendingIntent actionPendingIntent = PendingIntent.getBroadcast(paramContext, 0, active, 0);
         rview.setOnClickPendingIntent(R.id.MyWidgetTxt, actionPendingIntent);
         if (paramString.equals(TAG_IMAGE_CLICK)) {
         if(ii==0)
            {
            rview.setImageViewResource(R.id.ImageView01a, R.drawable.off);
                    ii=1;
            }
            else
            {
            rview.setImageViewResource(R.id.ImageView01a, R.drawable.on);
                    ii=0;
            }
            }
         return rview;
      }
     }
ρяσѕρєя K
  • 132,198
  • 53
  • 198
  • 213