【发布时间】:2011-10-31 06:04:00
【问题描述】:
我想将 TextToSpeech 引擎的输出写入我的应用程序的缓存目录。为了让 TTS 在那里写,我首先必须授予它这样做的权限。但我不知道怎么做。我知道通常可以通过提交FileDescriptor 来解决此类问题,从而授予访问特定文件的权限。但我不能用 TTS 做到这一点,因为 TextToSpeech.synthesizeToFile 方法只接受文件路径作为字符串,而不接受 FileDescriptor。那么该怎么办呢?
为了说明 TTS 确实无权写入我的应用程序目录,下面是代码...:
TextToSpeech mTts = new new TextToSpeech(context, this);
mTts.synthesizeToFile(text, null, getCacheDir() + "/" + "speech.wav");
以及调试器日志:
08-20 14:46:11.257: ERROR/TtsService(336): Can't create
/data/data/com.myorg.myapp/cache/speech.wav due to exception java.io.IOException: Permission denied
【问题讨论】:
-
This thread 建议
TextToSpeech.synthesizeToFile()仅适用于 AVD,而不适用于真正的手机......这很奇怪。我会进一步调查,看看是否确实如此。 -
而this thread 建议可以在真实设备上使用
TextToSpeech.synthesizeToFile()。但是怎么做??? -
这太疯狂了:我设法不再获得
java.io.IOException,而是收到了成功消息Synthesizing to /mnt/sdcard/test.wav,但是在文件系统的任何地方都找不到test.wav(绝对不是在 /mnt/sdcard 上)。怎么回事?
标签: android file-permissions text-to-speech permission-denied