首页 > 解决方案 > Android - 创建文件适用于 Android 5 但不适用于 Android 6 或更高版本

问题描述

我有一个简单的方法,可以在 Android 的下载文件夹中创建一个文件夹。它在 Android 5 中运行良好,但在 Android 6 或更高版本(我使用 Android 6 和 8 测试)中没有创建文件夹。

有什么改变吗?

这是我的方法,正如我所说的,它是一个简单的创建文件夹功能。但它不适用于 Android 6 或更高版本,仅适用于 Android 5。

public void exportaTabelas(SQLiteDatabase db, String tableName) {
        try {
            // Query the data in the table
            Cursor cursor = db.rawQuery("SELECT * FROM " + tableName, null);

            //File exportDir = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS);

            exportDir = new File (Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS) + "/ENEL/");
            if (!exportDir.exists())
            {
                exportDir.mkdirs();
            }

            File file = new File(exportDir, tableName +".csv");
            file.createNewFile();

            //CSVWriter csvWriter = new CSVWriter(new FileWriter(file));
            CSVWriter csvWriter = new CSVWriter(new FileWriter(file.getAbsoluteFile(), true));

            // Write the table data to the file
            csvWriter.writeNext(cursor.getColumnNames());
            while(cursor.moveToNext()) {
                String arrStr[] = { cursor.getString(0), cursor.getString(1) };
                csvWriter.writeNext(arrStr);
            }

            // close cursor and writer
            cursor.close();
            csvWriter.close();

        } catch (Exception e) {
            // handle exception
            Log.e("MainActivity", e.getMessage(), e);
        }

        Toast.makeText(this, "ARQUIVO CSV GERADO!", Toast.LENGTH_SHORT).show();
    }

标签: javaandroidfile

解决方案


我假设你有一个问题permission

Android 5.1.1 及更低版本使用安装时权限,因此文件<uses-permission ...>中的amanifest就足够了。检查这个

但是对于超过 5.1.1 的 Android,您需要<uses-permission ...>在清单中并在运行时请求用户许可。检查这个

Android Developers 文档站点是您最好的选择!

PS:您应该在问题中包含任何错误消息,例如在try catch块中捕获并记录到 Android Studio IDE 中的 Logcat 的任何错误。


推荐阅读