使用setPendingIntentTemplate打开活动

时间:2015-05-14 21:15:23

标签: android android-intent android-pendingintent

我正在使用一个stackView做一个小部件,我正在使用RemoteViewFactory添加位图(图像)。

我的问题是当我想为每个图像(我在stackView中)做onClickPendingIntent()时。我知道我必须使用setPendingIntentTemplate(),但是当我按下某个小部件的图像时,我不知道如何进入活动。

然后我在widget类的onUpdate()里面创建了Pending Intent Template:

Intent templateIntent = new Intent(Intent.ACTION_VIEW);
        templateIntent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, appWidgetId);
        PendingIntent templatePendingIntent = PendingIntent.getActivity(
                context, 0, templateIntent, PendingIntent.FLAG_UPDATE_CURRENT);

        views.setPendingIntentTemplate(R.id.widget_stack_view,
                templatePendingIntent);

这就是我在RemoteViewsFactory类中处理Pending Intent Template的原因:

public RemoteViews getViewAt(int index){
    RemoteViews rv = new RemoteViews(context.getPackageName(), R.layout.grid_item_layout);

    rv.setImageViewBitmap(R.id.image, images.get(index).getImage());

    Intent fillInIntent = new Intent();
    fillInIntent.putExtra(Intent.EXTRA_TEXT, images.get(index).getTitle());
    rv.setOnClickFillInIntent(R.id.image, fillInIntent);


    return rv;

}

到目前为止,这个fillInIntent.putExtra(Intent.EXTRA_TEXT, images.get(index).getTitle());正在通过电话向我展示“使用完整操作”,您可以选择要打开的应用,但是如果您看到我在{{{ 1}}是一个字符串。但我想要的是打开一个活动,然后使用putExtra()传递一个位图的图像(putExtra()

1 个答案:

答案 0 :(得分:3)

我弄清楚出了什么问题:

Intent templateIntent = new Intent(context, Activity_I_want_to_open.class);
templateIntent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, appWidgetId);
    PendingIntent templatePendingIntent = PendingIntent.getActivity(
            context, 0, templateIntent, 0);

然后,我不需要FLAG_UPDATE_CURRENT,因为我想什么都不更新。

在RemoteViews方面:

Intent fillInIntent = new Intent();
rv.setOnClickFillInIntent(R.id.image, fillInIntent);

我不需要putExtra()因为我没有将数据发送到其他活动。