views:

646

answers:

2

The Android documentation describes how to disable the search the search feature in Activity: public boolean onSearchRequested() { return false; }

This works fine for a short press of the search button on the Nexus One. However, it doesn't disable the long press, which still fires off a voice search.

How do I disable the long press Voice search?

Thanks...

A: 

It doesn't seem like a very nice thing to do to users, but onKeyDown can be used to disable both tap and long press search in an Activity as shown here:

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    if (keyCode == KeyEvent.KEYCODE_SEARCH) {
        return true;
    }
    return super.onKeyDown(keyCode, event);
}
Stan Kurdziel
+1  A: 

I extended Stan's answer to only disable long press events.

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    if (keyCode == KeyEvent.KEYCODE_SEARCH
        && (event.getFlags() & FLAG_LONG_PRESS)) {
        return true;
    }

    return super.onKeyDown(keyCode, event);
}
codelark