Я пытаюсь экспортировать данные 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();
}
}