由于本人的项目目前暂时不添加小部件,所以我就不做跟着本文做了,以下是原内容。原文地址:http://www.bangchui.org/read.php?tid=12239
我们要达到这样的效果:点击“add widget” 后弹出widget列表,之后选择一个widget后显示在界面上,如下:
第四课:显示widget
1. 获取widget信息
获取widget其实非常简单,我们只需要发送一个请求到系统,系统就会打开widget的列表,然后我们选择一个即可。代码如下:
2. 添加widget的view到layout中
当选择一个widget后会通过onActivityResult 通知到activity,widget的信息被包含在 Intent data中,详情看代码注释
- void addWidget() {
- int appWidgetId = mAppWidgetHost.allocateAppWidgetId();
- Intent pickIntent = new Intent(AppWidgetManager.ACTION_APPWIDGET_PICK);
- pickIntent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, appWidgetId);
-
- startActivityForResult(pickIntent, [b]REQUEST_PICK_APPWIDGET[/b]);
- }
- @Override
- protected void onActivityResult(int requestCode, int resultCode, Intent data) {
-
-
-
-
-
-
-
-
- if (resultCode == RESULT_OK) {
- switch (requestCode) {
- case REQUEST_PICK_APPWIDGET:
- addAppWidget(data);
- break;
- case REQUEST_CREATE_APPWIDGET:
- completeAddAppWidget(data);
- break;
-
- }
- }
- }
-
- void addAppWidget(Intent data) {
-
- int appWidgetId = data.getIntExtra(AppWidgetManager.EXTRA_APPWIDGET_ID,
- -1);
- AppWidgetProviderInfo appWidget = mAppWidgetManager
- .getAppWidgetInfo(appWidgetId);
-
-
- if (appWidget.configure != null) {
-
- Intent intent = new Intent(
- AppWidgetManager.ACTION_APPWIDGET_CONFIGURE);
- intent.setComponent(appWidget.configure);
- intent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, appWidgetId);
-
- startActivityForResultSafely(intent, REQUEST_CREATE_APPWIDGET);
- } else {
-
-
- onActivityResult(REQUEST_CREATE_APPWIDGET, Activity.RESULT_OK, data);
- }
- }
-
- void startActivityForResultSafely(Intent intent, int requestCode) {
- try {
- startActivityForResult(intent, requestCode);
- } catch (ActivityNotFoundException e) {
- Toast.makeText(this, "activity_not_found", Toast.LENGTH_SHORT)
- .show();
- } catch (SecurityException e) {
- Toast.makeText(this, "activity_not_found", Toast.LENGTH_SHORT)
- .show();
- }
- }
-
-
-
-
-
- private void completeAddAppWidget(Intent data) {
- Bundle extras = data.getExtras();
- int appWidgetId = extras
- .getInt(AppWidgetManager.EXTRA_APPWIDGET_ID, -1);
-
- Log.d(TAG, "dumping extras content=" + extras.toString());
-
- AppWidgetProviderInfo appWidgetInfo = mAppWidgetManager
- .getAppWidgetInfo(appWidgetId);
-
-
- synchronized (mLock) {
-
-
- mHostView = mAppWidgetHost.createView(this, appWidgetId,
- appWidgetInfo);
- mHostView.setAppWidget(appWidgetId, appWidgetInfo);
-
-
- LayoutParams lp = new LinearLayout.LayoutParams(
- appWidgetInfo.minWidth, appWidgetInfo.minHeight);
- mainLayout.addView(mHostView, lp);
-
- mHostView.requestLayout();
- }
-
- }
android手把手教你开发launcher(一)(AndroidStudio版)
android手把手教你开发launcher(二)——列出安装的应用程序
android手把手教你开发launcher(三)——启动安装的应用程序
android手把手教你开发launcher(四)——显示widget
android手把手教你开发launcher(五)——设置壁纸
转自:http://www.bangchui.org/read.php?tid=12239