无法打开文件(权限被拒绝)
Failed to open file (Permission denied)
我正在尝试通过 MediaRecorder
class 在 Android 中录制音频,将其保存在文件中,然后使用 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 但没有任何改变。
我做错了什么?
您是否在清单文件中添加了权限
<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
我解决了这个问题,由于某种原因,我使用的文件名导致了这个错误。
我曾经获取一个日期,将其转换为字符串并消除所有空格;像这样:
SunSep0914:31:19GMT+00:002018.3gp
现在,在调试我的应用程序时,我将其更改为 test.3gp
,它的效果非常好...
我正在尝试通过 MediaRecorder
class 在 Android 中录制音频,将其保存在文件中,然后使用 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 但没有任何改变。
我做错了什么?
您是否在清单文件中添加了权限
<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
我解决了这个问题,由于某种原因,我使用的文件名导致了这个错误。
我曾经获取一个日期,将其转换为字符串并消除所有空格;像这样:
SunSep0914:31:19GMT+00:002018.3gp
现在,在调试我的应用程序时,我将其更改为 test.3gp
,它的效果非常好...