我正在尝试通过遵循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 组件/类名称。