[英]How to get the Widget state/view using the widget id in android?
[英]How to get android widget id of a single widget?
使用下面的代码,我们可以获得我们拥有的所有Android小部件的列表。
AppWidgetManager appWidgetManager = AppWidgetManager.getInstance(context);
ComponentName thisAppWidget = new ComponentName(context, WidgetProvider.class);
int[] appWidgetIds = appWidgetManager.getAppWidgetIds(thisAppWidget);
但是,如何获取我刚刚单击的小部件的ID? 这意味着我有3或4个小部件,当我单击其中的一个时,我需要获取我单击的小部件的ID。
如何获得? 我尝试了以下功能
public static int getWidgetId(Intent intent) {
Bundle extras = intent.getExtras();
int appWidgetId = AppWidgetManager.INVALID_APPWIDGET_ID;
if (extras != null) {
appWidgetId = extras.getInt(AppWidgetManager.EXTRA_APPWIDGET_ID, AppWidgetManager.INVALID_APPWIDGET_ID);
}
return appWidgetId;
}
但这对我不起作用。
我假设您正在将setOnClickPendingIntent()
设置为setOnClickPendingIntent()
中的布局元素之一。 只需设置appWidgetId
作为额外给你的Intent
。
遵循以下基本思想:
@Override
public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
final int N = appWidgetIds.length;
int appWidgetId;
// Create an Intent for every Widget by iterating over the appWidgetIds array
// appWidgetIds array contains all Widgets
for (int i = 0; i < N; ++i) {
appWidgetId = appWidgetIds[i];
Intent intent = new Intent(context, MyClass.class);
// Add the appWidgetId to the Intent
intent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, appWidgetId);
PendingIntent pendingIntent = PendingIntent.getActivity(context, appWidgetId, intent,
PendingIntent.FLAG_CANCEL_CURRENT);
// TODO init RemoteViews
remoteViews.setOnClickPendingIntent(R.id.myView, pendingIntent);
appWidgetManager.updateAppWidget(appWidgetIds[i], remoteViews);
}
super.onUpdate(context, appWidgetManager, appWidgetIds);
}
这样,您可以在Activity中调用函数getWidgetId ,并应获取相应的appWidgetId。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.