Как прикрепить файл внутренней памяти к 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)

0 ответов

Другие вопросы по тегам