我正在尝试通过遵循Android开发者博客上的this article来实现文本到语音的功能。如果不支持,建议使用以下代码将文本安装到语音数据。

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

这会抛出一个Exception:



但是,我正在使用代码here来确定实际上支持该 Intent 。这是列表表示形式:
[ResolveInfo{43cc5280 com.svox.pico.DownloadVoiceData p=0 o=0 m=0x108000}]

为什么不起作用?

更新

我不知道为什么,但是现在似乎可以了。

最佳答案

要检查 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 );
}

如果无法使用resolveActivity()找到 Activity ,则意味着该 Activity 需要一些未提供的其他参数。在这种情况下,您应该使用queryIntentActivities()获得类名称,并设置 Intent 组件/类名称。

09-26 12:04