検索ウィジェットを作成したい。ウィジェットをクリックすると、アプリ内で検索アクティビティが開きます。これは、ウィジェットプロバイダーの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()
nullが返されます。SearchActivity(アプリのデフォルトのSearchManagerハンドラー)がSearchManagerを介して呼び出されると、有効なアクションがとして取得されandroid.intent.action.SEARCH
ます。
保留中の意図で何が間違っているのですか?