Получите данные из вашего EditText, Spinner и DatePicker и сохраните их в строке, используя требуемый разделитель для вашего CSV (например, запятая, точка с запятой, табуляция, пробел и т.файл, а затем используйте Intent.Action_SEND вместе с Intent.CreateChooser, чтобы отправить файл в качестве вложения.Если ваш файл хранится внутри (то есть является частным), то вам также необходимо использовать ContentProvider (см. ссылка ).
Вот пример:
//For simplicity's sake let's say you have three methods
//to get the value of your EditText, Spinner,
//and DatePicker and these methods return a String
String editTextValue = getEditTextValue();
String spinnerTextValue = getSpinnerTextValue();
String datePickerTextValue = getDPTextValue();
//Create a String in csv format with the String values obtained
//from the above fictitious methods. The delimiter in this case is the semicolon ";"
String myFileContentString = editTextValue + ";" +
spinnerTextValue + ";" +
datePickerTextValue + "\n";
//Save file to internal storage
FileOutputStream fos = openFileOutput("myfilename.csv", Context.MODE_WORLD_WRITEABLE);
fos.write(myFileContentString.getBytes());
fos.close();
//Send the file as an attachment
final Intent emailIntent = new Intent(android.content.Intent.ACTION_SEND);
emailIntent.setType("plain/text");
emailIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, "A CSV File");
emailIntent.putExtra(android.content.Intent.EXTRA_TEXT, "See attachment...");
emailIntent.putExtra(android.content.Intent.EXTRA_STREAM,
Uri.parse("content://" + MyContentProviderClass.AUTHORITY + "/" + "myfilename.csv"));
startActivity(Intent.createChooser(emailIntent, "Send mail..."));
Не забудьте перехватить исключения с помощью try / catch
Вам потребуется создать подкласс класса ContentProvider и переопределить метод openFile.См. Ссылки здесь и здесь , чтобы узнать, как реализовать свой собственный поставщик контента.
В своем подклассе ContentProvider вы захотите что-то вроде следующего в методе openFile:
String fileLocation = getContext().getFilesDir() + File.separator + "myfilename.csv";
ParcelFileDescriptor pfd = ParcelFileDescriptor.open(new File(fileLocation),
ParcelFileDescriptor.MODE_READ_ONLY);
return pfd;
И не забудьте обновить AndroidManifest.xml:
<provider android:name="my.package.content.provider.Class"
android:authorities="my.package.content.provider"></provider></application>
Объявление провайдера в файле манифеста входит в объявление приложения.