我正在编写一个简单的活动来录制和保存音频,最好是我的应用程序中的文件夹,但为了简单起见,还要写入SD卡。给我带来麻烦的代码行是
String path = Environment.getExternalStorageDirectory().toString() + "/" + "tempAppFiles/";
String filename = "test"+".mp4";
recorder.setOutputFile(path + filename);
其中recorder是MediaRecorder的一个实例。
当我运行应用程序时,我收到一个声明
的权限错误07-31 15:51:51.810: W/System.err(13670): java.io.FileNotFoundException: /mnt/sdcard/tempAppFiles/test.mp4 (Permission denied)
我看了这个问题,发现我需要在清单上添加几个权限标签,然后我添加了
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />
到我的清单。
我仍然遇到相同的权限问题,我找不到有类似问题的人。
有什么想法吗?
答案 0 :(得分:0)
嗯......权限似乎是正确的,也许你把它们放在了错误的地方,它们需要children of the root note .
接下来,通过检查
来c an check, whether you can write该文件boolean canIWrite = path.canWrite();
因为你还得到一个FileNotFound异常,你可以试试......
String path = Environment.getExternalStorageDirectory().getAbsolutePath();
......而不是......
String path = Environment.getExternalStorageDirectory().toString();
如果根本没有帮助,仍然有一个捕获音频的官方示例 - 您应该将您的代码与以下内容进行比较: http://developer.android.com/guide/topics/media/audio-capture.html
答案 1 :(得分:0)
tempAppFiles不适合我。好像你应该写到你正在编写的应用程序包名下的目录......