Как прикрепить изображение к письму на Android emailIntent - PullRequest
0 голосов
/ 14 июля 2020

Для отправки электронного письма используется метод кнопки:

public void buttonSendEmailClicked(View view) {

        File file = saveFileToShare();
        Intent emailIntent = new Intent(android.content.Intent.ACTION_SEND); 
        emailIntent.setType("application/image");
        emailIntent.putExtra(android.content.Intent.EXTRA_EMAIL, new String[]{}); 
        emailIntent.putExtra(android.content.Intent.EXTRA_SUBJECT,"Check Out MyPic"); 
        emailIntent.putExtra(android.content.Intent.EXTRA_TEXT, "Taken With Android!");
        emailIntent.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(file));
        startActivityForResult(Intent.createChooser(emailIntent, "Send mail..."), interstitial_request);
    
    }

Элемент saveFileToShare:

public File saveFileToShare() {
            try 
            {               
                File fileImage = new File(Environment.getExternalStorageDirectory() +  "/DCIM/Camera/attachment.png");
                if(!fileImage.exists())
                {
                    fileImage.delete();
                }
                editorImage.setDrawingCacheEnabled(true);
                Bitmap bitmap = editorImage.getDrawingCache();
                fileImage.createNewFile();
                FileOutputStream ostream = new FileOutputStream(fileImage);
                bitmap.compress(CompressFormat.PNG, 100, ostream);                                        
                ostream.close();
                editorImage.invalidate();
                editorImage.setDrawingCacheEnabled(false);
                
                return fileImage;

            } 
            catch (Exception e) 
            {
                System.out.print(e);
                e.printStackTrace();
                return null;
            }
     }

Сохранение изображения работает нормально, код сохранения ;

public void buttonSaveImageClicked(View view) throws IOException {
        editorImage.setDrawingCacheEnabled(true);
        Bitmap bitmap = editorImage.getDrawingCache();
        SaveLayoutToFile saveImage = new SaveLayoutToFile(this, bitmap, editorImage);
        String filePath = Environment.getExternalStorageDirectory() +  "/DCIM/Camera/wonkydog";
        saveImage.execute(filePath);
    }

Мне нужно установить код электронной почты, чтобы захватить изображение и прикрепить к электронной почте.

В тот момент, когда я нажимаю кнопку электронной почты, он просто возвращается на экран заголовка без выполнения что-нибудь еще.

Если я закомментирую эту строку

emailIntent.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(file));

Затем откроется диалоговое окно отправки почты, но без вложений, конечно ...

1 Ответ

0 голосов
/ 16 июля 2020

Я нашел ответ, вместо того, чтобы использовать emailIntent.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(file));

, я заменил его на; emailIntent.putExtra(Intent.EXTRA_STREAM, FileProvider.getUriForFile(EditorActivity.this, "com.myapp.myappname.provider", file));

Теперь работает корректно!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...