无法打开文件(权限被拒绝)

问题描述 投票:3回答:2

我正在尝试通过Android中的MediaRecorder类录制音频,将其保存在文件中,然后使用MediaPlayer播放。

这是我选择要保存音频文件的文件的位置:

currentDate = Calendar.getInstance().getTime();
condensedDate = currentDate.toString().replaceAll("\\s", "")
fileName = getExternalCacheDir().getAbsolutePath();
fileName += File.separator + condensedDate + ".3gp";

在这里我将它设置为MediaRecorder的输出文件

Recorder.setOutputFile(fileName);

然后,在另一个Activity我使用MediaPlayer播放该文件音频:

MediaPlayer player = new MediaPlayer();
try {
     player.setDataSource(fileName);
     player.prepare();
     player.start();
} catch (IOException e) {
        e.printStackTrace();
}

这是问题开始的地方,没有播放,这是我的日志:

09-09 14:31:38.887 1522-26066/? E/FileSource: Failed to open file '/storage/emulated/0/Android/data/com.mycompany.dbmeter.pro/cache/SunSep0914:31:19GMT+00:002018.3gp'. (Permission denied)
09-09 14:31:38.887 1522-26066/? E/GenericSource: Failed to create data source!
09-09 14:31:38.887 25996-26064/com.mycompany.dbmeter.pro E/MediaPlayerNative: error (1, -2147483648)

这很奇怪,因为我一步一步地按照可以找到here的官方示例代码。

我尝试使文件世界可读,如建议in this stack overflow post

我也尝试了here的建议,但没有任何改变。

我究竟做错了什么?

android android-mediaplayer mediarecorder
2个回答
4
投票

我解决了这个问题,由于某种原因,我使用的文件的名称导致了这个错误。

我曾经得到一个日期,将其转换为字符串并消除所有空格;这样的事情:

SunSep0914:31:19GMT+00:002018.3gp

现在,在调试我的应用程序时,我将其更改为test.3gp,它就像一个魅力......


0
投票

您是否在Manifest文件中添加了权限?

<uses-permission android:name="android.permission.RECORD_AUDIO" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

资料来源:https://developer.android.com/guide/topics/media/mediarecorder

© www.soinside.com 2019 - 2024. All rights reserved.