Android - Создание файла работает на Android 5, но не на Android 6 или выше - PullRequest
0 голосов
/ 22 февраля 2019

У меня есть простой метод, который создает папку внутри Download Folder в 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();
    }

1 Ответ

0 голосов
/ 22 февраля 2019

Я предполагаю, что у вас проблема с permission.

Android 5.1.1 и ниже использует разрешения на время установки, поэтому достаточно <uses-permission ...> в файле manifest.Отметьте this

Но для Android более 5.1.1 вам необходимо указать и 1010 * в манифесте, и запросить у пользователя разрешение во время выполнения.Проверьте этот

Сайт документации для разработчиков Android - ваш лучший выбор!

PS: Вы должны включать любые сообщения об ошибках, которые вы получили с вашим вопросом, например, любую ошибку, которая попала вtry catch блокируется и регистрируется в Logcat в IDE Android Studio.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...