Android发送带有附件的电子邮件不会';我不总是工作

Android发送带有附件的电子邮件不会';我不总是工作,android,android-intent,gmail,android-contentprovider,Android,Android Intent,Gmail,Android Contentprovider,我正在使用ContentProvider发送带有附件的电子邮件 首先,我将文件写入缓存目录 然后,我为内容提供商要查找的每个文件创建一个带有url的电子邮件 然后,我开始一个新的活动,动作是“发送”和“多重意图” 我选择gmail,然后点击发送按钮 这有时是有效的,它似乎在一段时间内第一次起作用,但在随后的尝试后不起作用。。。但情况并非总是如此 当它不起作用时,电子邮件就被困在发送gmail中。这种情况发生在2.3.3和4.0.1版本,在gmail客户端打开邮件并点击发送按钮通常会导致邮件几乎立

我正在使用ContentProvider发送带有附件的电子邮件

  • 首先,我将文件写入缓存目录
  • 然后,我为内容提供商要查找的每个文件创建一个带有url的电子邮件
  • 然后,我开始一个新的活动,动作是“发送”和“多重意图”
  • 我选择gmail,然后点击发送按钮
  • 这有时是有效的,它似乎在一段时间内第一次起作用,但在随后的尝试后不起作用。。。但情况并非总是如此

    当它不起作用时,电子邮件就被困在发送gmail中。这种情况发生在2.3.3和4.0.1版本,在gmail客户端打开邮件并点击发送按钮通常会导致邮件几乎立即发送,但不是每次都发送

    使用Google Drive打开Intent与gmail具有相同的行为

    到目前为止,使用内置的exchange邮件客户端打开Intent始终有效

    以下是发送电子邮件的代码:

                Intent sendIntent = new Intent(Intent.ACTION_SEND_MULTIPLE);
                sendIntent.putExtra(Intent.EXTRA_EMAIL, exportParams.emailAddresses);
                sendIntent.putExtra(Intent.EXTRA_SUBJECT, "Leader Activity Report");
                sendIntent.putExtra(Intent.EXTRA_TEXT, "Leader Activity Report, see attached file.");
                Uri fileUri = CachedFileProvider.createFileUri(result.fileName);
                if (L.dbg())
                    L.dbg("Using uri:" + fileUri.toString());
                ArrayList<Uri> uris = new ArrayList<Uri>();
                uris.add(fileUri);
                Uri fileUri2 = CachedFileProvider.createFileUri(result.fileNameDayByDay);
                uris.add(fileUri2);
                if (L.dbg())
                    L.dbg("Using uri2:" + fileUri2.toString());
                sendIntent.putParcelableArrayListExtra(Intent.EXTRA_STREAM, uris);
                sendIntent.setType("text/plain");
                parent.startActivity(sendIntent);
    
    }

    对于成功和“暂停”的电子邮件发送,gmail会打印以下日志消息:

    04-03 22:17:35.027: I/Gmail(13206): >>>>> Attachment uri: content://com.josh.lll.file.provider/report_20100401_20130402_LeadetJosh_3_1364980653516.csv
    04-03 22:17:35.035: I/Gmail(13206): >>>>>           type: text/plain
    04-03 22:17:35.035: I/Gmail(13206): >>>>>           size: 0
    04-03 22:17:35.054: I/Gmail(13206): >>>>> Attachment uri:  content://com.josh.lll.file.provider/backup_20100401_20130402_LeadetJosh_3_1364980653516_day_by_day.lll
    04-03 22:17:35.054: I/Gmail(13206): >>>>>           type: text/plain
    04-03 22:17:35.054: I/Gmail(13206): >>>>>           size: 0
    
    找到了治疗方法:

    • 禁用Gmail
    • 重置为出厂默认值
    • 重新启动手机,就像关机和开机一样
    • 启用Gmail

    应该再次适用于附件

    存储在系统文件夹(如/data/app或/system)中的文件


    解决方法是:将这些文件复制到SD卡位置,然后从那里附加/使用它们。

    如果我在每个文件名上附加一个唯一的字符串,这个问题就会消失。那不是我想做的,是的。事实上,它并没有完全消失,只是变得不太可能。嘿,你解决了这个问题吗?我遇到了类似的情况,但在我的情况下,电子邮件已发送,但附件丢失。我收到相同的日志消息,但大小正确。
    04-03 22:17:35.027: I/Gmail(13206): >>>>> Attachment uri: content://com.josh.lll.file.provider/report_20100401_20130402_LeadetJosh_3_1364980653516.csv
    04-03 22:17:35.035: I/Gmail(13206): >>>>>           type: text/plain
    04-03 22:17:35.035: I/Gmail(13206): >>>>>           size: 0
    04-03 22:17:35.054: I/Gmail(13206): >>>>> Attachment uri:  content://com.josh.lll.file.provider/backup_20100401_20130402_LeadetJosh_3_1364980653516_day_by_day.lll
    04-03 22:17:35.054: I/Gmail(13206): >>>>>           type: text/plain
    04-03 22:17:35.054: I/Gmail(13206): >>>>>           size: 0