gpt4 book ai didi

Android - 将 AppWidgets 添加到 Activity

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:20:31 24 4
gpt4 key购买 nike

我的初始目标是将 Google 搜索小部件添加到 Activity 的线性布局中。我需要像它在 Launcher 中显示和工作一样包含它(这就是为什么我需要能够添加小部件)。


我想将小部件添加到我的 Activity 中,而不必启动小部件选择器 Activity 。我尝试过了:

1.直接指定一个整数 id(我总是得到 inflate 错误)

2。像这样获取 id:

  ComponentName cn = new ComponentName(getBaseContext(), "com.android.quicksearchbox.SearchWidgetProvider");
int[] ids = AppWidgetManager.getInstance(getApplicationContext()).getAppWidgetIds (cn);

(数组总是空的)

这些都不起作用。

在此之后,我有了这段代码,可以使用 ID(如果我从小部件选择器 Activity 中获取 ID,它就可以工作):

    AppWidgetProviderInfo withWidgetInfo = AppWidgetManager.getInstance(getApplicationContext()).getAppWidgetInfo(appWidgetId);
AppWidgetHostView hostView = myWidgetHost.createView(getBaseContext(), appWidgetId, withWidgetInfo);
hostView.setAppWidget(appWidgetId, withWidgetInfo);
LinearLayout ll = (LinearLayout) findViewById(R.id.ll);
ll.addView(hostView);

我应该怎么做?谢谢!

最佳答案

试试这个:

// APPWIDGET_HOST_ID is any number you like
appWidgetManager = AppWidgetManager.getInstance(this);
appWidgetHost = new AppWidgetHost(this, APPWIDGET_HOST_ID);
AppWidgetProviderInfo newAppWidgetProviderInfo = new AppWidgetProviderInfo();

// Get an id
int appWidgetId = appWidgetHost.allocateAppWidgetId();

// Get the list of installed widgets
List<AppWidgetProviderInfo> appWidgetInfos = new ArrayList<AppWidgetProviderInfo>();
appWidgetInfos = appWidgetManager.getInstalledProviders();

for(int j = 0; j < appWidgetInfos.size(); j++)
{
if (appWidgetInfos.get(j).provider.getPackageName().equals("com.android.quicksearchbox") && appWidgetInfos.get(j).provider.getClassName().equals("com.android.quicksearchbox.SearchWidgetProvider"))
{
// Get the full info of the required widget
newAppWidgetProviderInfo = appWidgetInfos.get(j);
break;
}
}

// Create Widget
AppWidgetHostView hostView = appWidgetHost.createView(this, appWidgetId, newAppWidgetProviderInfo);
hostView.setAppWidget(appWidgetId, newAppWidgetProviderInfo);

// Add it to your layout
LinearLayout ll = (LinearLayout) findViewById(R.id.ll);
ll.addView(hostView);

编辑:

要绑定(bind)小部件 ID,即让小部件更新并响应用户交互,请引用此处的解决方案:Widgets don't respond when re-added through code

关于Android - 将 AppWidgets 添加到 Activity,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9999584/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com