android - tool - title tag wordpress




Wie starte ich eine Aktivität, wenn ich auf mein Widget klicke? (2)

Ich habe dieses Widget, das den Ton ausschaltet, aber stattdessen möchte ich eine andere Aktivität aufrufen (MYxz.class). Bitte sag mir, was ich hier ändern soll ...

  public class AppWidget extends AppWidgetProvider {

 @Override
 public void onReceive(Context ctxt, Intent intent)
 {
      if(intent.getAction()==null)
      {
          ctxt.startService(new Intent(ctxt,ToggleService.class));
      }
   else
      {
    super.onReceive(ctxt, intent);
}

}

   @Override
  public void onUpdate(Context context,AppWidgetManager appWidgetManager, int [] appWidgetIds)
  {
context.startService(new Intent(context,ToggleService.class));
//RemoteViews buildUpdate(context);
   }

  public static class ToggleService extends IntentService
   {
public ToggleService() {
    super("AppWidget$ToggleService");

    }



    @Override
    protected void onHandleIntent(Intent intent)
 {
   ComponentName me = new ComponentName(this,AppWidget.class);
  AppWidgetManager mgr= AppWidgetManager.getInstance(this);
  mgr.updateAppWidget(me,buildUpdate(this));
 }

 private RemoteViews buildUpdate(Context context)
{
RemoteViews updateViews=new RemoteViews(context.getPackageName(),R.layout.widget);
AudioManager audioManager=(AudioManager)context.getSystemService(Activity.AUDIO_SERVICE);
if(audioManager.getRingerMode()==AudioManager.RINGER_MODE_SILENT)
{
    updateViews.setImageViewResource(R.id.phoneState,R.drawable.silent);
    audioManager.setRingerMode(AudioManager.RINGER_MODE_NORMAL);

}
else {
    updateViews.setImageViewResource(R.id.phoneState,R.drawable.phone123);
    audioManager.setRingerMode(AudioManager.RINGER_MODE_SILENT);

}
Intent i=new Intent(this, AppWidget.class);
PendingIntent pi= PendingIntent.getBroadcast(context,0, i,0);
updateViews.setOnClickPendingIntent(R.id.phoneState,pi);
return updateViews;
}

 }
}

Anstatt von:

Intent active = new Intent(paramContext, AppWidget.class);

Sie nutzen:

Intent active = new Intent(paramContext, YOURCLASS.class); 

Bevor Sie die ausstehende Absicht erstellen, hat @imran khan mir geholfen, aber es gibt einige Optimierungen, die Sie tun sollten 2 ... das sollte die Activity starten, die Sie benötigen.


Ja möglich siehe Beispiel:

Updaten Sie Ihre manifest.xml

<receiver android:name=".AppWidget"
        android:label="Caller"
        android:icon="@drawable/ic_launcher" >
        <intent-filter >
            <action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
 <action android:name="com.app.example.MyWidget.ACTION_WIDGET_CLICK_RECEIVER"/>

        </intent-filter>
        <meta-data 
            android:name="android.appwidget.provider"
            android:resource="@xml/widget_provider"
            />

    </receiver>
    <service android:name=".AppWidget$ToggleService"  />

und aktualisiere deinen AppWidgetProvider :

      public class MyWidget extends AppWidgetProvider {
                    public static String ACTION_WIDGET_CLICK_RECEIVER = "ActionReceiverWidget";

                    public static int appid[];
                    public static RemoteViews rview;
                    @Override
                    public void onUpdate(Context context, AppWidgetManager appWidgetManager, 
                            int[] appWidgetIds){
                        updateWidgetState(context, ""); 
                    }
                    @Override
                    public void onReceive(Context paramContext, Intent paramIntent)
                      {
                         String str = paramIntent.getAction();
                        if (paramIntent.getAction().equals(ACTION_WIDGET_CLICK_RECEIVER)) {
                            updateWidgetState(paramContext, str);   
                        }
                        else
                        {
                                if ("android.appwidget.action.APPWIDGET_DELETED".equals(str))
                                  {
                                    int i = paramIntent.getExtras().getInt("appWidgetId", 0);
                                    if (i == 0)
                                    {

                                    }
                                    else
                                    {
                                        int[] arrayOfInt = new int[1];
                                        arrayOfInt[0] = i;
                                        onDeleted(paramContext, arrayOfInt);
                                    }
                                  }
                          super.onReceive(paramContext, paramIntent);
                        }
                      }
                     static void updateWidgetState(Context paramContext, String paramString)
                      {
                        RemoteViews localRemoteViews = buildUpdate(paramContext, paramString);
                        ComponentName localComponentName = new ComponentName(paramContext, MyWidget.class);
                        AppWidgetManager.getInstance(paramContext).updateAppWidget(localComponentName, localRemoteViews);
                      }
                     private static RemoteViews buildUpdate(Context paramContext, String paramString)
                      {
                        // Toast.makeText(paramContext, "buildUpdate() ::"+paramString, Toast.LENGTH_SHORT).show();
                        rview = new RemoteViews(paramContext.getPackageName(), R.layout.widget_layout);
                        Intent active = new Intent(paramContext, MyWidget.class);
                        active.setAction(ACTION_WIDGET_RECEIVER);

                        PendingIntent configPendingIntent = PendingIntent.getActivity(paramContext, 0, active, 0);

        // upadte this R.id.buttonus1 with your layout or image id on which click you want to start Activity

    Intent configIntent = new Intent(paramContext, Caller2.class);
     configIntent.setAction((ACTION_WIDGET_CLICK_RECEIVER);
     PendingIntent configPendingIntent = PendingIntent.getActivity(paramContext, 0, configIntent, 0);
rview.setOnClickPendingIntent(R.id.Phonestatexx, configPendingIntent);
                        if(parmString.equals(ACTION_WIDGET_CLICK_RECEIVER))
                        {

                           //open Activity here..
                         //your code for update and what you want on button click
            //

                        }  
                         return rview; 
                      }
                    @Override
                    public void onEnabled(Context context){
                        super.onEnabled(context);
                       // Toast.makeText(context, "onEnabled()  ", Toast.LENGTH_SHORT).show();
                    }
                    // Called each time an instance of the App Widget is removed from the host
                    @Override
                    public void onDeleted(Context context, int [] appWidgetId){
                        super.onDeleted(context, appWidgetId);
                       // Toast.makeText(context, "onDeleted()  ", Toast.LENGTH_SHORT).show();
                    }
                    // Called when last instance of App Widget is deleted from the App Widget host.
                    @Override
                    public void onDisabled(Context context) {
                        super.onDisabled(context);
                       // Toast.makeText(context, "onDisabled()  ", Toast.LENGTH_SHORT).show();
                    }

                }




android-widget