android - 将小部件 ID 传递给 Activity

标签 android android-widget

在我的小部件提供程序中,我有以下代码:

for (int widget_id : appWidgetIds) {
  Log.d(TAG, "Widget Id: " + widget_id);
  RemoteViews remoteViews;

  Widget widget;

  while (true) {
    try {
      widget = Widget.load(context, Widget.class, widget_id);
      break;
    }
    catch (Exception ex) {
      Log.e(TAG, "Exception!", ex);
    }
  }

  // Widget is assigned to user
  if (widget != null) {
    remoteViews = new RemoteViews(context.getPackageName(), R.layout.widget_with_user);
    remoteViews.setCharSequence(R.id.user_text, "setText", widget.user.name);
    remoteViews.setUri(R.id.avatar, "setImageURI", Uri.parse(widget.user.avatar));
  }
  else {
    remoteViews = new RemoteViews(context.getPackageName(), R.layout.widget);
    Intent configIntent = new Intent(context, ConfigureWidget.class);
    configIntent.setAction(ACTION_WIDGET_CONFIGURE);
    configIntent.putExtra("widget_id", widget_id);

    PendingIntent configPendingIntent = PendingIntent.getActivity(context, REQUEST_CODE_ONE, configIntent, 0);
    remoteViews.setOnClickPendingIntent(R.id.configure_text, configPendingIntent);
  }

  appWidgetManager.updateAppWidget(widget_id, remoteViews);
}

在其他部分,我正在启动一个配置 Activity 并尝试将小部件 ID 传递给它。但是,包始终为空:

Bundle extras = getIntent().getExtras();

if (extras != null) {
  int widget_id = extras.getInt("widget_id");
}

如何获取已启动 Activity 的小部件 ID?

最佳答案

问题是 android 使用 PendingIntents 进行缓存。解决方案是添加 FLAG_UPDATE_CURRENT 标志,使其更新缓存的 PendingIntent。

PendingIntent configPendingIntent = PendingIntent.getActivity(context, REQUEST_CODE_ONE, configIntent, PendingIntent.FLAG_UPDATE_CURRENT);

Source

关于android - 将小部件 ID 传递给 Activity ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7289881/

相关文章:

android - Android中选项卡的生命周期

android - 如何在 TabActivity 中隐藏选项卡?

android - 启动配置 Activity 时调用的小部件 onUpdate

android - 自定义微调器项目未作为微调器的一部分出现

android - 小部件 UI 未响应广播而更新

java - 不幸的是 MyApp 已停止。我该如何解决这个问题?

java - 解析 JsonObject 时出错

java - 如何验证输入的手机号码?

android - 如何在 Mapbox 中使用集群图标?

android - 如何在android中选择文件夹?