TextToSpeech.Engine.ACTION_INSTALL_TTS_DATA的IntentNotFoundException

Cas*_*ash 5 android android-intent

我试图通过Android开发者博客上的这篇文章来实现文本到语音.如果不支持,它建议使用以下代码来安装文本到语音数据.

Intent installIntent = new Intent();
installIntent.setAction(TextToSpeech.Engine.ACTION_INSTALL_TTS_DATA);
startActivity(installIntent);
Run Code Online (Sandbox Code Playgroud)

这引发了Exception:

ActivityNotFoundException:找不到处理Intent的活动

但是,我在这里使用代码来确定实际支持的意图.这是列表表示:

[ResolveInfo{43cc5280 com.svox.pico.DownloadVoiceData p=0 o=0 m=0x108000}]
Run Code Online (Sandbox Code Playgroud)

为什么这不起作用?

更新

我不知道为什么,但它现在似乎有效.

Kar*_*ran 6

要检查是否实际支持intent,请使用以下代码:

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 );
}
Run Code Online (Sandbox Code Playgroud)

如果无法使用resolveActivity()找到活动,则表示活动需要一些其他未提供的参数.在这种情况下,您应该使用queryIntentActivities()获取类名,并设置intent组件/类名.