I have it working.
It appears getExtras() creates a copy of the Intent’s extras.
If I use the following line, this works fine:
getIntent().removeExtra("search");
Source code of getExtras()
/**
* Retrieves a map of extended data from the intent.
*
* @return the map of all extras previously added with putExtra(),
* or null if none have been added.
*/
public Bundle getExtras() {
return (mExtras != null)
? new Bundle(mExtras)
: null;
}