Android Studio,Genymotion - 发送带有txt文件附件的电子邮件:在Gmail中显示,但不发送

时间:2015-08-01 17:14:50

标签: java android email email-attachments genymotion

Java,Android Studio,Genymotion。

亲爱的同事们,

我发送电子邮件(Intent)与Android应用程序的txt附件。 Txt文件是由应用程序创建的。 在gny客户端的genymotion中,这个附件(文件大约1 Kb)正在显示,但真正的邮件没有附件。

代码段:

    // file creating 
    ...
        final String FILENAME = "file";
    ...

    try {
            // отрываем поток для записи
            BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(openFileOutput(FILENAME, MODE_PRIVATE)));

            // writing any data

            bw.write ("\n");
...
            Log.d(LOG_TAG, "file is created");


            bw.close();
}

// sending email with intent 

    public void sendEmailwithMailClient (){

        Intent emailIntent = new Intent(android.content.Intent.ACTION_SEND); 
// sending email

        emailIntent.setType("plain/text"); 
        emailIntent.putExtra(android.content.Intent.EXTRA_EMAIL, new String[]{"example@rambler.ru"}); 
        emailIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, getString(R.string.app_name)); 
        emailIntent.putExtra(android.content.Intent.EXTRA_TEXT, "Hello!");


        File file = new File(getFilesDir(), FILENAME);

 //       if (!file.exists() || !file.canRead()) {
 //           return;}



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

        startActivity(Intent.createChooser(emailIntent, "Pick an Email provider"));


    }

我是否通过getFilesDir()和FILENAME正确定义了Uri的附件? 为什么电子邮件在发送过程中丢失附件?它是Genymotion的问题,或者实际上我没有附加任何东西到邮件和附加显示在Genymotion只是一个假的?

提前谢谢!

1 个答案:

答案 0 :(得分:1)

您无法从应用专用存储中附加文件。 您需要将其保存到外部存储,然后附加。

File file = new File(getFilesDir(), FILENAME);

正在/data/data/package_name/files目录中创建您的文件。 其他应用无法访问哪些内容。 如果您仍想要从应用私有存储共享该文件,则需要创建ContentProvider