Подтвердить что ты не робот

Почему моя поисковая активность Intent.getAction() null?

Я следил за документацией SearchManager, но у меня все еще возникают проблемы с возможностью поиска одной из моих приложений. Из моей активности открывается диалоговое окно "Поиск", я ввожу запрос, ударяю поиск, снова открываю активную деятельность, затем вижу это в журнале:

D/SearchDialog(  584): launching Intent { act=android.intent.action.SEARCH flg=0x10000000 cmp=com.clinkybot.geodroid2/.views.Waypoints (has extras) }
I/SearchDialog(  584): Starting (as ourselves) #Intent;action=android.intent.action.SEARCH;launchFlags=0x10000000;component=com.clinkybot.geodroid2/.views.Waypoints;S.user_query=sdaf;S.query=sdaf;end
I/ActivityManager(  584): Starting activity: Intent { act=android.intent.action.SEARCH flg=0x10000000 cmp=com.clinkybot.geodroid2/.views.Waypoints (has extras) }
D/WAYPOINTS( 1018): NI Intent { cmp=com.clinkybot.geodroid2/.views.Waypoints (has extras) }
D/WAYPOINTS( 1018): NI null
D/WAYPOINTS( 1018): NI false 

Мне кажется, что все в порядке до последних трех строк. Линии "NI" равны getIntent().toString(), getIntent().getAction() и getIntent().hasExtra(SearchManager.QUERY) соответственно.

ActivityManager, похоже, начинает мою деятельность с правильного действия. Затем, когда моя деятельность начинается, она не содержит никаких действий!? Что я делаю неправильно?

Соответствующая часть моего манифеста:

<activity android:name=".views.Waypoints" android:label="Waypoints" android:launchMode="singleTop">
   <intent-filter>
    <action android:name="android.intent.action.SEARCH" />
    <category android:name="android.intent.category.DEFAULT" />
   </intent-filter>
   <meta-data android:name="android.app.searchable"
    android:resource="@xml/searchable" />
  </activity>
4b9b3361

Ответ 1

Это заняло слишком много часов моей жизни. При выполнении поиска из одноразового действия с возможностью поиска (в моем случае Waypoints) вы должны переопределить onNewIntent() и захватить там поисковый запрос. Который через несколько часов, я делал. Уловителем было то, что getIntent() не возвращает Intent, используемый для вызова активности (head explodes). Кажется, он возвратил первоначальное намерение, которое открыло мою поисковую активность, прежде чем я выполнил свой первый поиск.

метод onNewIntent получает намерение поиска. Я заменил getIntent() параметром fromNewIntent() и стрелой, прогресс.

Хотя я должен признать; выяснение этого облегчает разочарование в том, что он не может избежать звука Танца со Звездами, рвущимися в фоновом режиме.