在Android Marshmallow上保存文件的例外情况

时间:2015-10-21 06:16:00

标签: android android-sdcard android-permissions

之前,我在我的root设备上使用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;
        }

是的,我确实拥有application文件

Manifest.xml标记之外的权限
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> 

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

之前,我使用注释行来获取存储目录,但现在两者都无效。任何形式的帮助将不胜感激。

我在删除数据线后尝试保存文件,我仍然得到同样的例外。

1 个答案:

答案 0 :(得分:0)

操作系统带来了许多新功能,它还有一个内置的文件管理器,许多用户可能会忽视它。

许多第三方文件管理器允许用户重命名文件,创建新文件夹,剪切文件等。但是,Android 6.0 Marshmallow的板载文件管理器不允许这样的操作。

  

请注意,它们返回的文件路径会在以后动态更改   应用程序在内部和外部存储设备之间移动。什么时候   建立文件路径,强烈建议您随时致电   这些API是动态的。不要使用硬编码文件路径或持久化   以前构建的完全限定文件路径。

链接供参考

1)http://developer.android.com/about/versions/marshmallow/android-6.0.html

2)http://www.techtimes.com/articles/94044/20151012/android-6-0-marshmallow-has-a-built-in-file-manager-heres-how-to-access-it.htm