语音识别器意图未取回 OnActivityResult 中的数据



我在单击按钮时有一个语音识别器意图。

voiceSearch.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {
        try{
            Intent intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
            intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL,
                    RecognizerIntent.LANGUAGE_MODEL_FREE_FORM);
            intent.putExtra(RecognizerIntent.EXTRA_PROMPT, "Speak Now...");
            startActivityForResult(intent, REQUEST_CODE);
        }
        catch (ActivityNotFoundException e) {
            Log.v("Speech", "Could not find any Speech Recognition Actions");
        }
    }
});

在活动结果上,我的代码为

     @Override
 public void onActivityResult(int requestCode, int resultCode, Intent data) {
     System.out.println("Request code++++++++++++++++++++++++++++"+requestCode);
     System.out.println("Result Code+++++++++++++++++++++++++++++"+resultCode);
     System.out.println("Data++++++++++++++++++++++++++++++++++++"+data);
   System.out.println("Language"+data.getStringExtra(RecognizerIntent.EXTRA_LANGUAGE));
     System.out.println("data.getDataString()"+data.getDataString());
     if (requestCode == REQUEST_CODE && resultCode == RESULT_OK) {
     if (data != null && data.getData() != null) {
            String searchKey = data.getData().toString(); 
            System.out.println("Search Key++++++++++++++++++++++++"+searchKey);
            searchEditText.setText(searchKey);
            webView.loadUrl(url+"searchKey");
        }
 }
 }

我得到的输出是当我在onActivityResult打印时是

请求我得到的代码1

我得到的结果代码-1

我得到的数据Intent { (has extras) }

语言data.getStringExtra(RecognizerIntent.EXTRA_LANGUAGE)null

Data.getDataString()null .

任何人都可以让我知道我在代码中可能犯了什么错误。

谢谢。

我认为

您试图以错误的方式获得结果。它们不存储在数据字符串中,而是存储在匹配数组中。

您可以通过执行以下操作来获取数组:

ArrayList<String> matches = data.getStringArrayListExtra(
    RecognizerIntent.EXTRA_RESULTS);

数组中的每个条目都将是一个多字字符串,表示识别器对用户所说的内容的一个猜测。

最新更新