Не думаю, что вам нужно определять, есть ли на самом деле кнопка поиска оборудования.Фреймворк поможет вам в этом (хотя, я уверен, этот процесс упростится после выпуска Ice Cream Sandwich)
В настоящее время единственными устройствами, которые не имеют аппаратного поиска, являются планшеты Honeycomb.Поэтому, используя android:targetSdkVersion="11"
(или выше), добавив implements OnQueryTextListener
к вашему Fragment
или Activity
, а затем добавив что-то вроде:
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
inflater.inflate(R.menu.notebooks_menu, menu);
final SearchView sv = new SearchView(getActivity());
sv.setOnQueryTextListener(this);
menu.findItem(R.id.search_notebooks).setActionView(sv);
}
, вы по существу решите проблему.Теперь, чтобы заставить его работать на устройствах, предшествующих Honeycomb, вам может потребоваться использовать библиотеку совместимости или использовать отражение или некоторые другие средства защиты в вашем коде.*
Samsung Galaxy S II не имеет специальной кнопки поиска оборудования, но если вы удерживаете кнопку меню нажатой в течение нескольких секунд, он начнет действовать как кнопка поиска оборудования.