Android的 - 增加AppWidgets一个活动Android、AppWidgets

2023-09-04 08:50:09 作者:Tiamo叛逆つ

我最初的目标是将谷歌搜索小工具添加到活动中的线性布局。我需要的只是喜欢它出现,并启动工作(这就是为什么我需要能够添加窗口小部件),将其纳入。的

我想小部件添加到我的活动有内部消除推出小部件选择器的活动。我尝试过了:  

1。直接指定一个整数ID(我总是夸大错误)

I would like to add widgets to my activity whithout having to launch the widget picker activity. I tried to:

1. directly specify an integer id (I always get inflate errors)

2。获得ID是这样的:

2. get the id like this:

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

(数组总是空的)

(the array is always empty)

所有这些作品。

在此我有这个code,使用ID(它的工作原理,如果我从窗口小部件选择器活动ID):

After this I have this code, to use the ID (it works if I get the ID from the widget picker activity):

    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);

我应该怎么办呢?谢谢!

How should I do it? Thank you!

推荐答案

试试这个:

// 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);
 
精彩推荐
图片推荐