使用 setPendingIntentTemplate 打开 Activity
Open Activity with setPendingIntentTemplate
我正在用一个 stackView 做一个小部件,我在里面用 RemoteViewFactory 添加位图(图像)。
我的问题是当我想为每个图像(我在 stackView 中)做一个 onClickPendingIntent()
时。我知道我必须改用 setPendingIntentTemplate()
,但我不知道如何在按下某个小部件的图像时转到 Activity。
那么这就是我在 onUpdate()
中从小部件 class 中创建待定意向模板的内容:
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 class 中用来处理未决意向模板的内容:
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());
正在与 phone 一起显示一个 "use complete actions",您可以在其中选择要打开的应用程序,但是如果您看到我的内容m 放入 putExtra()
是一个字符串。但我想要的是打开一个 Activity 然后用 putExtra()
传递一个位图
的图像 (images.get(index).getImage()
)
我发现问题所在了:
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(),因为我没有向其他人发送数据 activity。
我正在用一个 stackView 做一个小部件,我在里面用 RemoteViewFactory 添加位图(图像)。
我的问题是当我想为每个图像(我在 stackView 中)做一个 onClickPendingIntent()
时。我知道我必须改用 setPendingIntentTemplate()
,但我不知道如何在按下某个小部件的图像时转到 Activity。
那么这就是我在 onUpdate()
中从小部件 class 中创建待定意向模板的内容:
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 class 中用来处理未决意向模板的内容:
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());
正在与 phone 一起显示一个 "use complete actions",您可以在其中选择要打开的应用程序,但是如果您看到我的内容m 放入 putExtra()
是一个字符串。但我想要的是打开一个 Activity 然后用 putExtra()
传递一个位图
images.get(index).getImage()
)
我发现问题所在了:
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(),因为我没有向其他人发送数据 activity。