Как прикрепить файл внутренней памяти к Gmail с помощью файлового провайдера?
Мне нужно прикрепить серию документов к электронному письму, код, кажется, работает, но он никогда не прикрепляет файлы к электронному письму, я искал Stack Overflow для решения, но все, кажется, указывают на метод, который я в настоящее время использую, который не приводит к правильной функциональности.
Насколько я понимаю, следующий код должен работать, он не выдает никаких ошибок, но не прикрепляет файлы:
private void sendMail(){
String recipientList = "email@gmail.com";
String[] recipients = recipientList.split(",");
String subject = "from app"; //place holder values
String message = "info from app"; //place holder values
try{
// generates the email activity populating the subject, email address and text fields
Intent intent = new Intent(Intent.ACTION_SEND);
intent.putExtra(Intent.EXTRA_EMAIL,recipients);
intent.putExtra(Intent.EXTRA_SUBJECT,subject);
intent.putExtra(Intent.EXTRA_TEXT,message);
// the following grants permission from the app to read and write outside of its environment
intent.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
intent.setFlags(Intent.FLAG_GRANT_WRITE_URI_PERMISSION);
// for loop for each item in directory in order to upload all items to email provider i.e gmail
String path = getFilesDir().toString();
File directory = new File(path);
File[] files = directory.listFiles();
for(int i = 0; i < files.length;i++){
// display all files in directory in logcat as a checking process
Log.d("Files","FileName: "+ files[i].getName() + "\n");
Intent shareIntent = new Intent(Intent.ACTION_SEND);
shareIntent.setPackage("com.google.android.gms");
Uri fileUri = FileProvider.getUriForFile(this,getString(R.string.file_provider_authority),new File(files[i].getName()));
// double check that the file is being seen and can be attached
Log.d("Files","file to be attached: " + fileUri + "\n");
shareIntent.putExtra(Intent.EXTRA_STREAM, fileUri);
}
// sets chooser to type able to handle appropriate request,
// could use setType to "text/csv" or "application/csv" etc
intent.setType("message/rfc822");
startActivity(Intent.createChooser(intent, "Choose an email client"));
}catch(Exception e){
System.out.println("is exception raised during sending mail"+e);
}
}
Копия вывода Locgcat:
07-10 04: 29: 25.760 5843-5843 / com.example.app.serialappv03 D / Файлы: Имя файла: 340303.csv
07-10 04: 29: 25.773 5843-5843 / com.example.app.serialappv03 D / Файлы: прикрепляемый файл: content: //file_provider_authority/root/340303.csv
07-10 04: 29: 25.776 5843-5843 / com.example.app.serialappv03 D / Файлы: Имя файла: 340202.csv
07-10 04: 29: 25.782 5843-5843 / com.example.app.serialappv03 D / Файлы: прикрепляемый файл: content: //file_provider_authority/root/340202.csv
07-10 04: 29: 25.784 5843-5843 / com.example.app.serialappv03 D / Файлы: Имя файла: 340902.csv
07-10 04: 29: 25.790 5843-5843 / com.example.app.serialappv03 D / Файлы: прикрепляемый файл: content: //file_provider_authority/root/340902.csv
07-10 04: 29: 27.847 5843-5873 / com.example.app.serialappv03 D / EGL_emulation: eglMakeCurrent: 0xa2f850c0: ver 3 1 (tinfo 0xa2f83280)