
public voID bindAppWidgets(Launcher.DesktopBinder binder,linkedList<WidgetInfo> appWidgets) { if (!appWidgets.isEmpty()) { for(int k=0;k<appWidgets.size();k++){ final WidgetInfo item = appWidgets.get(k); System.out.println("Item to be added in the vIEw :::::::::"+item.toString()); int appWidgetID = item.appWidgetID; if(item.itemType == LauncherProvIDer.Widgets.ITEM_TYPE_DEFAulT_APPWidget){ bindDefaultAppWidgets(item); continue; item.appWidgetID=mAppWidgetHost.allocateAppWidgetID(); LauncherModel.updateItemInDatabase(getApplicationContext(),item); appWidgetID=item.appWidgetID; } final appwidgetproviderInfo appWidgetInfo = mAppWidgetManager.getAppWidgetInfo(appWidgetID); System.out.println("the AppWidget info is*******"+appWidgetInfo); item.hostVIEw =(LauncherAppWidgetHostVIEw) mAppWidgetHost.createVIEw(this,appWidgetID,appWidgetInfo); if (LOGD) { d(TAG,String.format("about to setAppWidget for ID=%d,info=%s",appWidgetInfo)); } item.hostVIEw.setAppWidget(appWidgetID,appWidgetInfo); item.hostVIEw.setTag(item); MyabsoluteLayout.LayoutParams lp=new MyabsoluteLayout.LayoutParams(item.spanX,item.spanY,item.cellX,item.cellY); System.out.println("after load the hostvIEw ::::::::::: :::::::::"+item.toString()); mDragLayer.addVIEw(item.hostVIEw,lp); } mDragLayer.requestLayout(); } } 现在我在appwidgetproviderInfo中获取小部件的空值.因为我无法在主屏幕中加载主机视图.任何人都建议我在主屏幕中添加小部件,不带appWidgetpicker应用程序.
解决方法 除非启动器具有特殊权限并且是系统应用程序(将允许它使用此权限),否则无法使用此类功能.通过简单地搜索“bindAppWidgetID”,有很多地方会告诉你相同的.这是一个例子:
Binding AppWidgets to AppWidgetHost – Android
原因是安全性.
我认为即使你自己的应用程序小部件,你也无法绑定.但是,您可以通过创建自定义视图来模仿app-Widget.它们比appWidgets有更多的功能,所以你可以做任何你想做的事情.
总结以上是内存溢出为你收集整理的android – 如何在代码中将小部件添加到主屏幕全部内容,希望文章能够帮你解决android – 如何在代码中将小部件添加到主屏幕所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)