我已經關注了SearchManager文檔,但仍然無法使我的某個應用的活動搜索到。從我的活動,出現在搜索對話框,我輸入查詢,點擊搜索,我的活動重新打開,然後我看到這個在日誌中:爲什麼我的可搜索活動的Intent.getAction()爲空?
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>
我很高興在我的頭部爆炸之前發現了這個SO問題。這在應用基礎知識指南中提到,但該死的在[Intent#FLAG_ACTIVITY_SINGLE_TOP](http://j.mp/gkTnyw)中提及onNewIntent而不是僅在[Intent#FLAG_ACTIVITY_CLEAR_TOP](http:///j.mp/fNlEM3)。此外,[Activity#getIntent](http://j.mp/ftcS6p)的文檔甚至沒有提及任何東西!呃... 那就說,謝謝。 – brack 2011-01-07 18:51:46
所以也許最好總是從onCreate調用onNewIntent(getIntent()),只是讓你知道它遵循相同的代碼路徑。 – mclin 2011-01-26 22:22:16
你的問題在這裏解釋http://developer.android.com/guide/topics/search/search-dialog.html#LifeCycle,但是即使應用這個,我仍然得到空... – max4ever 2012-06-01 10:56:13