让自己的Android应用支持appwidget
2010-12-18 08:04:06 来源:WEB开发网info.provider = new ComponentName(getPackageName(), "XXX.YYY");
info.label = "Search";
info.icon = R.drawable.ic_search_widget;
customInfo.add(info);
pickIntent.putParcelableArrayListExtra(
AppWidgetManager.EXTRA_CUSTOM_INFO, customInfo);
ArrayList customExtras = new ArrayList();
Bundle b = new Bundle();
b.putString(EXTRA_CUSTOM_WIDGET, "search_widget");
customExtras.add(b);
pickIntent.putParcelableArrayListExtra(
AppWidgetManager.EXTRA_CUSTOM_EXTRAS, customExtras);
// start the pick activity
startActivityForResult(pickIntent, REQUEST_PICK_APPWIDGET);
}
/**
* 添加widget
* @param data
*/
private void completeAddAppWidget(Intent data) {
Bundle extras = data.getExtras();
int appWidgetId = extras.getInt(AppWidgetManager.EXTRA_APPWIDGET_ID, -1);
d("completeAddAppWidget", "dumping extras content="+extras.toString());
d("completeAddAppWidget", "appWidgetId:"+ appWidgetId);
AppWidgetProviderInfo appWidgetInfo = mAppWidgetManager.getAppWidgetInfo(appWidgetId);
View hostView = mAppWidgetHost.createView(this, appWidgetId, appWidgetInfo);
layout.addInScreen(hostView, appWidgetInfo.minWidth, appWidgetInfo.minHeight);
}
}
运行效果如下:
需要注意的几点:
1。 必须调用AppWidgetHost的startListening方法来监听appwidget的状态变化,否则添加上去的appwidget不会更新的。
2。 需要override一个onActivityResult方法,来接收添加appwidget和appwidget的配置activity的返回值。
3。 启动AppWidgetManager.ACTION_APPWIDGET_PICK这个Intent,必须要给列表中加上自己定义的一个选项,否则出错。如本例中是用的Search。
源码见附件。
点击下载:附件下载
更多精彩
赞助商链接