Сообщение о намерении от поставщика виджетов - PullRequest
0 голосов
/ 02 августа 2010

Я хочу построить поисковый виджет . Нажатие на виджет должно открыть поисковую активность внутри моего приложения. Вот код из onUpdate () провайдера виджетов.

public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds)
{
    /* as their may be many widget instances for this widget. we get an array. */
    for(int i=0;i< appWidgetIds.length; i++)
    {
        Intent intent = new Intent(context, SearchActivity.class);
        intent.setAction("android.intent.action.SEARCH");
        PendingIntent pdIntent = PendingIntent.getActivity(context, 0, intent, 0);

        RemoteViews view = new RemoteViews(context.getPackageName(), myPackage.R.layout.search_appwidget); 
        view.setOnClickPendingIntent(R.id.search_widget_textbox,pdIntent );
        appWidgetManager.updateAppWidget(appWidgetIds[i], view);
    }

}

Внутри моего SearchActivity.onCreate () я проверяю намеренное действие как Intent.ACTION_SEARCH.equals( this.getIntent().getAction()). Однако, когда намерение публикуется с использованием PendingIntent через провайдера виджетов, this.getIntent().getAction() возвращает ноль. Когда SearchActivity (который является обработчиком SearchManager по умолчанию для приложения) вызывается через SearchManager, он получает действительное действие как android.intent.action.SEARCH.

Что я делаю не так с ожидающим намерением?

1 Ответ

1 голос
/ 03 августа 2010

Я получил свой ответ здесь . Как это указано, действие публикуется в SearchActivity.OnReceive (). Также действие предназначено для text_box (не для действия) и, следовательно, SearchActivity.getIntent().getAction() равно нулю.

...