点击小部件后如何启动一个活动?

3

我希望创建一个简单的小部件,其中包含一个图标来启动我的应用程序。

我的小部件和其布局已经正常工作,但我找不到点击它后启动应用程序的方法。

这是小部件类:

public class LauncherWidget extends AppWidgetProvider {

    private static final String ACTION_CLICK = "ACTION_CLICK";

    @Override
    public void onUpdate(Context context, AppWidgetManager appWidgetManager) {

        Intent intent = new Intent(context, SplashActivity.class);
        intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

        // Attach the intent to the widget's button.
        final PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, intent, 0);
        remoteViews.setOnClickPendingIntent(R.id.widget, pendingIntent);

    }

}

我从未创建过小部件,所以我不知道该怎么做。

我在这里查找更多信息,但我能找到的只有在单击时更新其内容的小部件,但我尝试使用它们的代码,但它不起作用。

提前致谢。

2个回答

4

这是对我有用的...

onUpdate方法的代码应该是:

@Override
    public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
        for (int i = 0; i < appWidgetIds.length; i++) {
            int appWidgetId = appWidgetIds[i];

            try {
                Intent intent = new Intent("android.intent.action.MAIN");
                intent.addCategory("android.intent.category.LAUNCHER");

                intent.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
                intent.setComponent(new ComponentName(context.getPackageName(),
                        "Activity.class"));
                PendingIntent pendingIntent = PendingIntent.getActivity(
                        context, 0, intent, 0);
                RemoteViews views = new RemoteViews(context.getPackageName(),
                        R.layout.widget_layout);
                views.setOnClickPendingIntent(R.id.widget, pendingIntent);
                appWidgetManager.updateAppWidget(appWidgetId, views);
            } catch (ActivityNotFoundException e) {
                Toast.makeText(context.getApplicationContext(),
                        "There was a problem loading the application: ",
                        Toast.LENGTH_SHORT).show();
            }

        }
    }

我尝试了这段代码,它部分地工作了。我能够在小部件上注册点击事件,但无法启动活动。我使用了您的代码,并进行了一些小的修改以适应我的类名等。 - Pallavi Prasad

0
在您的小部件AppWidgetProvider类的onUpdate()方法中使用此代码片段:
@Override
public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
    RemoteViews remoteViews = new RemoteViews(context.getPackageName(), R.layout.widgetlayout);
    Intent configIntent = new Intent(context, Activity.class);

    PendingIntent configPendingIntent = PendingIntent.getActivity(context, 0, configIntent, 0);

    remoteViews.setOnClickPendingIntent(R.id.widget, configPendingIntent);
    appWidgetManager.updateAppWidget(appWidgetIds, remoteViews);
} 

1
我尝试过这个,但它没有启动我想要的活动。 - Jahir Fiquitiva

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接