2012-04-05 6 views
1

Mögliche Duplizieren:
How to launch activity from android home screen widgetWie starte ich eine Aktivität mit Heim Widget

Was ist der einfachste Code, um eine Aktivität aus der Anwendungen Home-Bildschirm-Widget zu starten?

Der Code, den ich bisher habe funktioniert nicht und nichts zeigt in LogCat .. ??

Das Widget hat ein Bild darin und wenn das Bild angetippt wird, sollte die Anwendung starten. Auf der Suche nach einem Schnipsel.

public class MyWidget extends AppWidgetProvider 
{ 
    // Create an Intent to launch activity from ImageView 
    @Override 
    public void onEnabled(Context context) 
    { 
    Intent intent = new Intent(Intent.ACTION_MAIN, null); 
    intent.addCategory(Intent.CATEGORY_LAUNCHER); 

    ComponentName comp = new ComponentName(context.getPackageName(),MyWidget.class.getName()); 
    intent.setComponent(cn); 
    intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
    PendingIntent myPI = PendingIntent.getActivity(context, 0, intent, 0); 

    RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.content);//<-THE LAYOUT W/I THE MainActivity CLASS?? 

    views.setOnClickPendingIntent(R.id.widgetLauncher, myPI);//<-THE IMAGEVIEW ID?? 

    AppWidgetManager mgr = AppWidgetManager.getInstance(context); 
    mgr.updateAppWidget(comp, views); 
    } 
} 

Widget Layout:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical" > 

    <ImageView 
     android:id="@+id/widgetLauncher" 
     android:layout_width="258dp" 
     android:layout_height="54dp" 
     android:layout_centerInParent="true" 
     android:src="@drawable/wgt_logo" > 
    </ImageView> 

</RelativeLayout> 
+0

http://buildmobile.com/how-to-code-an-android-widget – slayton

+0

@Colin Pickard habe verschiedene Wege versucht, aber nichts. Siehe den addierten Code über – CelticParser

+0

Was ist mit den negativen Marken? Ich habe die Forschung gemacht und kann nichts zur Arbeit bringen. Ich habe mehr Code hinzugefügt. Was auch immer Leute. – CelticParser

Antwort

4

Das schließlich arbeitete:

public class MyWidget extends AppWidgetProvider 
{ 
    // Create an Intent to launch activity 
    @Override 
    public void onUpdate(Context context, AppWidgetManager appWidgetManager,int[] appWidgetIds) 
    { 
    super.onUpdate(context, appWidgetManager, appWidgetIds); 

    RemoteViews remoteViews = new RemoteViews(context.getPackageName(), R.layout.home_widget); 
    // When we click the widget, we want to open our main activity. 
    Intent launchActivity = new Intent(context, MainActivity.class); 
    PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, launchActivity, 0); 
    remoteViews.setOnClickPendingIntent(R.id.widget, pendingIntent);; 

    ComponentName thisWidget = new ComponentName(context, MyWidget.class); 
    AppWidgetManager manager = AppWidgetManager.getInstance(context); 
    manager.updateAppWidget(thisWidget, remoteViews); 
    } 
} 
+1

Aber das scheint einen Onclick für das gesamte Widget, nicht nur das Bild zu setzen? Wie hat man ein separates Ereignis, um auf das Widget zu klicken und auf ein Bild im Widget zu klicken? – Yusufk

Verwandte Themen