当用户按下硬件搜索按钮时,如何在android中执行搜索?

当用户按下硬件搜索按钮时,如何在android中执行搜索?,android,android-search,Android,Android Search,我用它进行软件搜索(当用户按下放大镜时,搜索会在菜单中折叠),它可以完美地工作: @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.view_entries, menu);

我用它进行软件搜索(当用户按下放大镜时,搜索会在菜单中折叠),它可以完美地工作:

@Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.view_entries, menu);
        // Associate searchable configuration with the SearchView
        SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE);
        SearchView searchView = (SearchView) menu.findItem(R.id.viewMenu_search).getActionView();
        int id = searchView.getContext().getResources().getIdentifier("android:id/search_src_text", null, null);
        TextView textView = (TextView) searchView.findViewById(id);
        textView.setTextColor(Color.YELLOW);
        textView.setHintTextColor(Color.WHITE);
        searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
            @Override
            public boolean onQueryTextSubmit(String s) {
                return true;
            }

            @Override
            public boolean onQueryTextChange(String s) {
                ViewEntries.this.customAdapter.getFilter().filter(s);
                return true;
            }
        });
        searchView.setSearchableInfo(searchManager.getSearchableInfo(getComponentName()));

        return true;
    }
我的问题是:当用户使用硬件按钮开始搜索时,如何获取搜索查询字符串(类似于参数字符串s的字符串)。我尝试了这一点,但我得到的不是搜索意图,而是启动活动的意图(因此我从未输入if):


我还说,在emulator上调试时,onSearchRequested在您开始搜索时调用,而不是在您输入查询后调用。可能是关于如何在那里获取searchview(id或其他信息)的提示?

有多少(当前)android设备带有硬件搜索按钮?我必须这样做。。。我知道,我知道…没有判断,只是好奇。我知道有这些要求;)
@Override
    public boolean onSearchRequested() {
        Intent intent1 = getIntent();
        if (Intent.ACTION_SEARCH.equals(intent.getAction())) {
            String s = intent1.getStringExtra(SearchManager.QUERY);
            ViewEntries.this.customAdapter.getFilter().filter(s);
        }
        return super.onSearchRequested();
    }