启动活动的Android简单小部件

|| 嗨,我之前从未使用过小部件,但是我想做的是创建一个非常简单的小部件,我基本上想制作一个只有图标的,只有一个图像设置为背景,没有文本的1 by 1小部件。没有什么只是一个小图标,当我按下图标时,我想打开一个活动。基本上,我想以小部件形式在应用程序抽屉中创建第二个图标,以打开另一个活动而不是主要活动。 任何帮助是极大的赞赏     
已邀请:
        经过大量研究和努力,我的提供者最终看起来像这样
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);
        }
    }
}
    
        在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用作onClick目标一个按钮。您可以使您的PendingIntent启动一个Activity,您应该会很好。     
        声明一个变量
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>
希望这会有所帮助     

要回复问题请先登录注册