早些时候,我在我的根设备上使用KitKat
,我能够轻松地创建临时文件。但是现在我已经在我的Nexus 5上安装了Marshmallow
,相同的代码给了我一个异常。
相关代码为:
File storageDir = Environment.getExternalStoragePublicDirectory(
Environment.DIRECTORY_DOWNLOADS);
// File repertoireStockage = Environment.getExternalStorageDirectory();
try {
file1 = File.createTempFile("RecordAudio",".mp4", storageDir);
}
catch (IOException e) {
Log.e("RecordAudio", "I/O Problem");
e.printStackTrace();
return;
}
是的,我确实有Manifest.xml
文件中application
标签之外的权限
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
之前,我使用注释行来获取存储目录,但现在,两者都不起作用。如能提供任何帮助,我将不胜感激。
我试着在删除数据线后保存文件,我仍然得到相同的异常。
这个操作系统带来了许多新功能,它还有一个内置的文件管理器,很多用户可能没有注意到。
许多第三方文件管理器允许用户重命名文件,创建新文件夹,剪切文件等等。然而,Android 6.0 Marshmallow的板载文件管理器不允许这样的操作。
请注意,它们返回的文件路径将动态更改应用程序在内部和外部存储设备之间移动。当构建文件路径时,强烈建议您始终调用动态地使用这些api。不要使用硬编码的文件路径或持久化以前构建的完全限定文件路径。
链接参考
http://developer.android.com/about/versions/marshmallow/android-6.0.html1)
2) http://www.techtimes.com/articles/94044/20151012/android-6-0-marshmallow-has-a-built-in-file-manager-heres-how-to-access-it.htm