android – 如何在代码中将小部件添加到主屏幕

android – 如何在代码中将小部件添加到主屏幕,第1张

概述我正在尝试编写一个简单的启动器应用程序.我正在尝试添加一个默认的小部件,如 android clock.I正在加载默认小部件的所有信息,如x,y位置,宽度和高度以及包信息.加载后我我正在获取主屏幕的appwidgetId.代码是这样的. public void bindAppWidgets(Launcher.DesktopBinder binder, LinkedL 我正在尝试编写一个简单的启动器应用程序.我正在尝试添加一个默认的小部件,如 android clock.I正在加载默认小部件的所有信息,如x,y位置,宽度和高度以及包信息.加载后我我正在获取主屏幕的appWidgetID.代码是这样的.

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 – 如何在代码中将小部件添加到主屏幕所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1124213.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-30
下一篇2022-05-30

发表评论

登录后才能评论

评论列表(0条)

    保存