我想将 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