android -studio-sqlite-database-export-data-to-csv-from-internal-storage - PullRequest
0 голосов
/ 28 мая 2020

Я пытаюсь экспортировать данные CSV, хранящиеся во внутреннем хранилище, с помощью электронной почты. to После предоставления разрешений это работает на эмуляторе и некоторых старых телефонах. Не на более новых. Будем признательны за любые предложения о том, как решить эту проблему. Фрагмент кода для класса ниже. Пока пропускается, а на новых телефонах отображается "уловка". на некоторых старых моделях телефонов это работает.

public void exportDB() {
Toast.makeText(MainActivity.this, "Entry", Toast.LENGTH_SHORT).show();
SqliteDatabase dbhelper = new SqliteDatabase(getApplicationContext());
File exportDir = new File(Environment.getExternalStorageDirectory(), "");
if (!exportDir.exists())
{
    exportDir.mkdirs();
}

File file = new File(exportDir, "data.csv");
try
{
    Toast.makeText(MainActivity.this, "Outer", 
    Toast.LENGTH_SHORT).show();
    file.createNewFile();
    CSVWriter csvWrite = new CSVWriter(new FileWriter(file));
    SQLiteDatabase db = dbhelper.getReadableDatabase();
    Cursor cursor = db.rawQuery("SELECT * FROM customers",null);
    csvWrite.writeNext(cursor.getColumnNames());
    while(cursor.moveToNext())
    {
        //Which column you want to export // file located in storage
        String arrStr[] ={cursor.getString(0),cursor.getString(1), 
        cursor.getString(2)};
        csvWrite.writeNext(arrStr);

        // emailing
        String filename = "data.csv";
        File filelocation = new 
        File(Environment.getExternalStorageDirectory().getAbsolutePath(), 
        filename);
        Uri path = Uri.fromFile(filelocation);
        Intent emailIntent = new Intent(Intent.ACTION_SEND);
        emailIntent .setType("txt/csv");
        emailIntent .putExtra(Intent.EXTRA_STREAM, path);
        emailIntent .putExtra(Intent.EXTRA_SUBJECT, "Subject");
        startActivity(Intent.createChooser(emailIntent , "Send 
         email..."));
        Toast.makeText(MainActivity.this, "Sending...email", 
        Toast.LENGTH_SHORT).show();


        }
       csvWrite.close();
       cursor.close();
        }
       catch(Exception sqlEx)
       {
       Log.e("MainActivity", sqlEx.getMessage(), sqlEx);
       Toast.makeText(MainActivity.this, "catch", 
       Toast.LENGTH_SHORT).show();
         }
       }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...