Java 我不知道为什么我的android应用程序一直崩溃

Java 我不知道为什么我的android应用程序一直崩溃,java,android,android-studio,Java,Android,Android Studio,我正在构建一个语音识别应用程序,当我说一个特定的词时,它会做一些事情,例如打开,它会打开一些东西等。但问题是,当我在手机上运行它,然后点击speak按钮时,我的应用程序会不断崩溃。我不知道还能做什么?我试着给它互联网和语音识别的许可,但仍然没有帮助 以下是java android studio中的代码 public class MainActivity extends Activity { private static final int VOICE_RECOGNITION_REQUEST_C

我正在构建一个语音识别应用程序,当我说一个特定的词时,它会做一些事情,例如打开,它会打开一些东西等。但问题是,当我在手机上运行它,然后点击speak按钮时,我的应用程序会不断崩溃。我不知道还能做什么?我试着给它互联网和语音识别的许可,但仍然没有帮助

以下是java android studio中的代码

public class MainActivity extends Activity {

private static final int VOICE_RECOGNITION_REQUEST_CODE = 1234;

private TextView resultText;

@Override
public void onCreate(Bundle savedInstanceState){
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    Button speakButton = (Button) findViewById(R.id.SpeakButton);

    speakButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view)
        {
            startVoiceRecognitionActivity();
        }
    });
}

void startVoiceRecognitionActivity(){
    Intent intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
    intent.putExtra(RecognizerIntent.EXTRA_CALLING_PACKAGE, getClass().getPackage().getName());
    intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL, RecognizerIntent.LANGUAGE_MODEL_FREE_FORM);
    intent.putExtra(RecognizerIntent.EXTRA_MAX_RESULTS, 5);
    startActivityForResult(intent, VOICE_RECOGNITION_REQUEST_CODE);
}

@Override
protected void onActivityResult (int requestCode,int resultCode, Intent data){
    String wordStr = null;
    String[] words = null;
    String firstWord = null;
    String secondWord = null;
    if (requestCode == VOICE_RECOGNITION_REQUEST_CODE && resultCode == RESULT_OK)
        {
            ArrayList<String> matches = data
                .getStringArrayListExtra(RecognizerIntent.EXTRA_RESULTS);
            wordStr = matches.get(0);
            words = wordStr.split(" ");
            firstWord = words[0];
            secondWord = words[1];
        }

    if (firstWord.equals("open"))
        {
            resultText = (TextView)findViewById(R.id.ResultText);
            resultText.setText("Results: Open Command Works");
        }
}
我看了看日志,上面写着:

08-07 20:12:57.81314350-14350/?E/BoostFramework:BoostFramework: Exception_1=java.lang.ClassNotFoundException:未找到类 com.qualcomm.qti.Performance on path: DexPathList[],nativeLibraryDirectories=[/system/lib64, /供应商/lib64]]08-07 20:12:58.509 14350-14350/com.starlinginteractivesoftworks.musiccompanion E/AndroidRuntime:致命异常:主 流程:com.starlinginteractivesoftworks.musiccompanion,PID:14350 android.content.ActivityNotFoundException:未找到要处理的活动 Intent{act=android.speech.action.RECOGNIZE\u speech launchParam=MultiScreenLaunchParams{mDisplayId=0 mFlags=0} 额外费用} 在 android.app.Instrumentation.checkstartactivityresultialinstrumentation.java:1839 在 android.app.Instrumentation.execStartActivityInstrumentation.java:1531 在android.app.Activity.startActivityForResultActivity.java:4399 在android.app.Activity.startActivityForResultActivity.java:4358 在 starlinginteractivesoftworks.musiccompanion.MainActivity.startVoiceRecognitionActivityMainActivity.java:55 在 com.starlinginteractivesoftworks.musiccompanion.MainActivity$1.onClickMainActivity.java:43 在android.view.view.performClickView.java:6205 在android.widget.TextView.performClickTextView.java:11103 在android.view.view$PerformClick.runView.java:23653 位于android.os.Handler.handleCallbackHandler.java:751 在android.os.Handler.dispatchMessageHandler.java:95 在android.os.Looper.Looper.java:154 位于android.app.ActivityThread.mainActivityThread.java:6682 在java.lang.reflect.Method.Invokenactive方法中 在 java:1520 位于com.android.internal.os.ZygoteInit.mainZygoteInit.java:1410


boost框架日志只是一个警告,不用担心。真正的问题是

ActivityNotFoundException:未找到可处理意图的活动

它可以来自:

连接不良 您的手机上缺少语音应用程序 可能的解决方案 确保已安装识别应用程序。有关详细信息,请参阅

尝试启用脱机模式,如下所述:

在您的设备上,进入设置->语言和输入。点击谷歌语音输入上的图标。 在“所有”选项卡下,选择要下载的语言。 下载语言包后,您可以在“已安装”选项卡下看到它。 权变措施 捕获异常并打开webview以下载识别应用程序:

try{
   ...
}
catch(ActivityNotFoundException e) {
Intent i = new Intent(Intent.ACTION_VIEW,            
   Uri.parse("https://market.android.com/details?id=APP_PACKAGE_NAME"));
startActivity(i);

}
在启动startActivity之前,请检查识别应用程序是否可用请参见:


在真正的设备上感谢编辑
try{
   ...
}
catch(ActivityNotFoundException e) {
Intent i = new Intent(Intent.ACTION_VIEW,            
   Uri.parse("https://market.android.com/details?id=APP_PACKAGE_NAME"));
startActivity(i);

}
PackageManager manager = context.getPackageManager();
List<ResolveInfo> infos = manager.queryIntentActivities(intent, 0);
if (infos.size() > 0) {
     //Then there is application can handle your intent
}else{
     //No Application can handle your intent
}