2012-01-31 2 views
2

Я пытаюсь использовать следующий код для запуска Google Voice Search из своего приложения. Он отлично работает на Nexus One, где Google Voice Search является загруженным приложением, однако он не работает на моем Galaxy Nexus, где он поставляется предустановленными. когда он попадает в getLaunchIntentForPackage, результат равен NULL. Может ли кто-нибудь помочь?Запуск предустановленного приложения из активности (Google Voice Search) Android

Intent i = new Intent(Intent.ACTION_MAIN); 
    PackageManager manager = getPackageManager(); 
    try { 
     i = manager.getLaunchIntentForPackage("com.google.android.voicesearch"); 
    } catch (NameNotFoundException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 
    i.addCategory(Intent.CATEGORY_LAUNCHER); 
    startActivity(i); 

ответ

5

Я столкнулся с той же проблемой. Кажется, это вызвано тем, как Google упаковал голосовую составляющую в ICS. Это уже не отдельное приложение. Он встроен в панель поиска через обычное приложение для поиска.

Исправление очень просто:

Intent intent = new Intent(RecognizerIntent.ACTION_WEB_SEARCH); 
startActivity(intent); 

Я нашел это через этот учебник, который больше о общем распознавания речи: http://www.jameselsey.co.uk/blogs/techblog/android-how-to-implement-voice-recognition-a-nice-easy-tutorial/

Там некоторый код там, чтобы убедиться, что установлен голосовой распознаватель:

PackageManager pm = getPackageManager(); 
List<ResolveInfo> activities = pm.queryIntentActivities(
    new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH), 0); 
    if (activities.size() == 0) 
    { 
     speakButton.setEnabled(false); 
     speakButton.setText("Recognizer not present"); 
    } 
Смежные вопросы