IntentNotFoundException для TextToSpeech.Engine.ACTION_INSTALL_TTS_DATA - PullRequest
5 голосов
/ 07 мая 2010

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

Intent installIntent = new Intent();
installIntent.setAction(TextToSpeech.Engine.ACTION_INSTALL_TTS_DATA);
startActivity(installIntent);

Это бросает Exception:

ActivityNotFoundException: нет активности найдено для обработки намерения

Однако я использую код здесь , чтобы определить, что намерение действительно поддерживается. Вот представление списка:

[ResolveInfo{43cc5280 com.svox.pico.DownloadVoiceData p=0 o=0 m=0x108000}]

Почему это не работает?

Обновление

Я не знаю почему, но сейчас это похоже на работу.

Ответы [ 2 ]

6 голосов
/ 21 мая 2010

Чтобы проверить, поддерживается ли намерение или нет, используйте следующий код:

PackageManager pm = getPackageManager();
Intent installIntent = new Intent();
installIntent.setAction(TextToSpeech.Engine.ACTION_INSTALL_TTS_DATA);
ResolveInfo resolveInfo = pm.resolveActivity( installIntent, PackageManager.MATCH_DEFAULT_ONLY );

if( resolveInfo == null ) {
   // Not able to find the activity which should be started for this intent
} else {
   startActivity( installIntent );
}

Если не удается найти действие с помощью resolActivity (), это означает, что для действия требуются некоторые другие параметры, которые не предоставлены. В этом случае вы должны получить имя класса с помощью queryIntentActivities () и установить целевое имя компонента / класса.

0 голосов
/ 22 мая 2010

На какую версию Android SDK вы нацеливаетесь с вашим кодом? Помните, что TTS доступен только с версии 1.6 (SDK Level 4). Этот код работает нормально с 2.0 (SDK Level 5).

<uses-sdk android:minSdkVersion="5" />
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...