java – 在Android启动器中托管小部件
发布时间:2020-12-14 05:37:50 所属栏目:Java 来源:网络整理
导读:我正在做一个 android的启动器,我被困在小部件部分.我一直在互联网上搜索大约一个半小时,想知道如何在我的应用程序中托管小部件,但没有运气. 我已经经历了一些股票发行人和ADW发射器代码,但是只有几英里的代码,这是我第一次制作发射器. 有人可以指导我如何在
我正在做一个
android的启动器,我被困在小部件部分.我一直在互联网上搜索大约一个半小时,想知道如何在我的应用程序中托管小部件,但没有运气.
我已经经历了一些股票发行人和ADW发射器代码,但是只有几英里的代码,这是我第一次制作发射器. 有人可以指导我如何在我的启动器中添加小部件?或者至少发布任何链接/教程?请谅解,因为这是我的第一次. 解决方法
尝试这个:
final int APPWIDGET_HOST_ID = 2048; final int REQUEST_PICK_APPWIDGET = 0; final int REQUEST_CREATE_APPWIDGET = 5; AppWidgetManager appWidgetManager; AppWidgetHost appWidgetHost; // Let user pick a widget from the list of intalled AppWidgets public void selectWidget() { int appWidgetId = this.appWidgetHost.allocateAppWidgetId(); Intent pickIntent = new Intent(AppWidgetManager.ACTION_APPWIDGET_PICK); pickIntent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID,appWidgetId); addEmptyData(pickIntent); startActivityForResult(pickIntent,REQUEST_PICK_APPWIDGET); } // For some reason you have to add this empty data,else it won't work public void addEmptyData(Intent pickIntent) { ArrayList<AppWidgetProviderInfo> customInfo = new ArrayList<AppWidgetProviderInfo>(); pickIntent.putParcelableArrayListExtra( AppWidgetManager.EXTRA_CUSTOM_INFO,customInfo); ArrayList<Bundle> customExtras = new ArrayList<Bundle>(); pickIntent.putParcelableArrayListExtra( AppWidgetManager.EXTRA_CUSTOM_EXTRAS,customExtras); }; @Override protected void onActivityResult(int requestCode,int resultCode,Intent data) { if (resultCode == RESULT_OK ) { if (requestCode == REQUEST_PICK_APPWIDGET) { configureWidget(data); } else if (requestCode == REQUEST_CREATE_APPWIDGET) { createWidget(data); } } else if (resultCode == RESULT_CANCELED && data != null) { int appWidgetId = data.getIntExtra(AppWidgetManager.EXTRA_APPWIDGET_ID,-1); if (appWidgetId != -1) { appWidgetHost.deleteAppWidgetId(appWidgetId); } } } // Show configuration activity of the widget picked by the user private void configureWidget(Intent data) { Bundle extras = data.getExtras(); int appWidgetId = extras.getInt(AppWidgetManager.EXTRA_APPWIDGET_ID,-1); AppWidgetProviderInfo appWidgetInfo = appWidgetManager.getAppWidgetInfo(appWidgetId); if (appWidgetInfo.configure != null) { Intent intent = new Intent(AppWidgetManager.ACTION_APPWIDGET_CONFIGURE); intent.setComponent(appWidgetInfo.configure); intent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID,appWidgetId); startActivityForResult(intent,REQUEST_CREATE_APPWIDGET); } else { createWidget(data); } } // Get an instance of the selected widget as a AppWidgetHostView public void createWidget(Intent data) { Bundle extras = data.getExtras(); int appWidgetId = extras.getInt(AppWidgetManager.EXTRA_APPWIDGET_ID,-1); AppWidgetProviderInfo appWidgetInfo = appWidgetManager.getAppWidgetInfo(appWidgetId); AppWidgetHostView hostView = appWidgetHost.createView(this,appWidgetId,appWidgetInfo); hostView.setAppWidget(appWidgetId,appWidgetInfo); // Add it on the layout you want myLayout.addView(hostView); } // Call this when you want to remove one from your layout public void removeWidget(AppWidgetHostView hostView) { appWidgetHost.deleteAppWidgetId(hostView.getAppWidgetId()); // Remove from your layout myLayout.removeView(hostView); } @Override protected void onStart() { super.onStart(); appWidgetManager = AppWidgetManager.getInstance(this); appWidgetHost = new AppWidgetHost(this,APPWIDGET_HOST_ID); // Start listening to pending intents from the widgets appWidgetHost.startListening(); } @Override protected void onStop() { super.onStop(); appWidgetHost.stopListening(); } 您只需要在安装在设备上的AppWidget列表中进行选择即可调用selectWidget()方法. 这个代码是一个修改版的股票Android发射器. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |