如何从另一个活动启动一个Android AppWidget的配置活动?(How to Launch

2019-07-29 02:10发布

嗯,这是推动我疯了。 我已经开发了一个应用程序,窗口小部件。 一切工作正常。

我有启动每一个窗口小部件在主屏幕上添加时间和工作美丽的配置活动。 我节省每件ID等用户设置

小部件有两个按钮,其中一个启动的活动有关的信息,在“关于活动”。

“关于活动”有一个按钮,我想用来启动配置活动为推出“关于活动”窗口小部件ID。 我想这样做的原因是因为我希望用户能够配置我的窗口小部件的任何实例的内容,而无需其移除并再次添加(以启动配置活动)。

配置活动需要AppWidgetManager.EXTRA_APPWIDGET_ID为了使这项工作(保存用户设置这个具体为widgetid),所以我必须以某种方式通过这个额外的时候我正在从另一个活动调用它。 最明显的认为做是这样的:

startActivity(new Intent(context,act_configure.class).putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, ??? ));

现在我的问题是在哪里是为widgetid? 我发现了一个亿的方法来获得widgetids(阵列),而不是如何得到它推出了“关于活动”具体为widgetid一个线索

关于任何帮助,这将使小时,我花了找到一个解决办法,值得的东西。 先感谢您。

ps请原谅我的英语,因为他们不是我的母语...

Answer 1:

你如何设置你的widget的看法? 我有一个应用程序,我遍历活动部件和配置设置的RemoteView那里。 你可以在你连接到“关于”按钮的onClick设置你的部件编号。

final AppWidgetManager widgetManager = AppWidgetManager.getInstance(this);
final ComponentName widgetName = new ComponentName(this, WidgetProvider.class);

final int[] widgetIds = widgetManager.getAppWidgetIds(widgetName);

for (int widgetId : widgetIds) {
    final RemoteViews remoteViews = new RemoteViews(getPackageName(), R.layout.widget);

    // This is the important part :-D
    remoteViews.findViewById(R.id.your_about_button).setOnClickListener(... a listener to start your about activity that puts the widget id in the extra like you suggest in your question ...);

    widgetManager.updateAppWidget(widgetId, remoteViews);
}


Answer 2:

这里由于科里Chaltron是解决我的问题。

在控件提供者的onUpdate方法我应该创建一个“独特”的意图传递给悬而未决的意图负责处理此次推出的有关活动。 由于Android的方式比较意图,传递为widgetid的演员是不够的,你也应该把它作为数据的意图,以是唯一的。 因此,这里的代码:

Intent aboutIntent = new Intent(cx, act_about.class);
aboutIntent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, widgetIds[i]);
// Make this unique for this appWidgetId
aboutIntent.setData(Uri.withAppendedPath(Uri.parse("customuri://widget/id/"), String.valueOf(widgetID)));
PendingIntent aboutPendingIntent = PendingIntent.getActivity(cx, 0, aboutIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK), PendingIntent.FLAG_UPDATE_CURRENT);
views.setOnClickPendingIntent(R.id.cmdabout, aboutPendingIntent)

虽然我回答我的问题,因为它是基于科里的答案,我不接受。 谢谢大家的帮助...



文章来源: How to Launch an Android AppWidget's configuration Activity from another activity?