2011-06-15 75 views
3

嗨,我从来没有用过小工具,但我想要做的是创建一个非常简单的小工具,我基本上想做一个1个小工具,只有一个图标,只是一个图像设置为背景没有文字只是一个小图标,当图标被按下时,我想打开一个活动。基本上,我想在窗口小部件窗体中打开另一个图标,就像打开另一个活动而不是主窗体一样。 非常感谢任何帮助Android简单小工具启动活动

回答

9

我的供应商最终看上去像这样大量的研究后,玩

public class WidgetProvider extends AppWidgetProvider { 
    @Override 
    public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) { 
     final int N = appWidgetIds.length; 

     for (int i=0; i<N; i++) { 
      int appWidgetId = appWidgetIds[i]; 

      Intent intent = new Intent(context, ClassToLaunchHere.class); 
      PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, intent, 0); 

      RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.widget); 
      views.setOnClickPendingIntent(R.id.widget, pendingIntent); 

      appWidgetManager.updateAppWidget(appWidgetId, views); 
     } 
    } 
} 
0

几个应用窗口小部件实现,显示最简单的方法来做到这一点是可见的https://github.com/commonsguy/cw-advandroid/tree/master/AppWidget

具体而言,https://github.com/commonsguy/cw-advandroid/blob/master/AppWidget/PairOfDice/src/com/commonsware/android/appwidget/dice/AppWidget.java显示了如何使用PendingIntent作为Button的onClick目标。你可以让你的PendingIntent开始一个活动,你应该很好去。

+0

好吧,我跟着这个链接,以一个小部件添加背景和删除文本等我看着你的链接,但还是无法弄清楚把正是在供应商类发起一个意图我的活动 http://androidcore.com/android-programming-tutorials/606.html – GFlam 2011-06-15 16:31:15

0

声明一个变量

public static String YOUR_AWESOME_ACTION = "YourAwesomeAction"; 

然后添加的onUpdate和的onReceive

@Override 
public void onUpdate(Context context, AppWidgetManager appWidgetManager, 
        int[] appWidgetIds) { 
    ComponentName thisWidget = new ComponentName(context, DigitalClock.class); 

    RemoteViews remoteViews = new RemoteViews(context.getPackageName(), R.layout.digital_clock); 

    for (int widgetId : appWidgetManager.getAppWidgetIds(thisWidget)) { 
     remoteViews.setOnClickPendingIntent(R.id.imageView, getPendingSelfIntent(context, YOUR_AWESOME_ACTION)); 
     appWidgetManager.updateAppWidget(thisWidget, remoteViews); 
    } 
} 

@Override 
public void onReceive(Context context, Intent intent) { 
    // TODO Auto-generated method stub 
    super.onReceive(context, intent); 

    if (YOUR_AWESOME_ACTION.equals(intent.getAction())) { 

     AppWidgetManager appWidgetManager = AppWidgetManager.getInstance(context); 

     RemoteViews remoteViews = new RemoteViews(context.getPackageName(), R.layout.digital_clock); 
     ComponentName watchWidget = new ComponentName(context, DigitalClock.class); 

     appWidgetManager.updateAppWidget(watchWidget, remoteViews); 

     Intent ntent = new Intent(context, MainActivity.class); 
     ntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
     context.startActivity(ntent); 

     //Toast.makeText(context, YOUR_AWESOME_ACTION, Toast.LENGTH_SHORT).show(); 
    } 
} 

protected PendingIntent getPendingSelfIntent(Context context, String action) { 
    Intent intent = new Intent(context, getClass()); 
    intent.setAction(action); 
    return PendingIntent.getBroadcast(context, 0, intent, 0); 
} 

,并添加活动在清单

<activity android:name=".MainActivity"> 
    <intent-filter> 
     <action android:name="android.intent.action.MAIN" /> 
     <category android:name="android.intent.category.LAUNCHER" /> 
    </intent-filter> 
</activity> 

希望这将有助于