试图将SD卡上的文件附加到电子邮件中

试图将SD卡上的文件附加到电子邮件中

我正试图发起一个发送电子邮件的意图。所有这些都有效,但当我试图真正发送电子邮件时,会发生一些“奇怪”的事情。

这是代码

Intent sendIntent = new Intent(Intent.ACTION_SEND);sendIntent.setType("image/jpeg");
sendIntent.putExtra(Intent.EXTRA_SUBJECT, "Photo");
sendIntent.putExtra(Intent.EXTRA_STREAM, Uri.parse(" 
sendIntent.putExtra(Intent.EXTRA_TEXT, "Enjoy the photo");startActivity(Intent.createChooser(sendIntent, "Email:"));

因此,如果我使用Gmail菜单上下文启动,它将显示附件,允许我键入电子邮件发送给谁,并编辑Body&Subject。别小题大作。我点击发送,它就发送。唯一的问题是附件没有发送。

所以。我想,为什么不试试电子邮件菜单上下文(用于我手机上的备用电子邮件帐户)。它显示附件,但在正文或主题中根本没有文本。当我发送它时,附件发送正确。这会让我相信有些事很不对劲。我是否需要一个新的许可在宣言发布,意图发送电子邮件w/附件?我做错什么了?


红颜莎娜
浏览 594回答 3
3回答

慕丝7291255

同样的问题代码:Intent emailIntent = new Intent(android.content.Intent.ACTION_SEND);      emailIntent.setType("image/jpeg");     emailIntent.putExtra(android.content.Intent.EXTRA_EMAIL, new String[]      {"me@gmail.com"});      emailIntent.putExtra(android.content.Intent.EXTRA_SUBJECT,      "Test Subject");      emailIntent.putExtra(android.content.Intent.EXTRA_TEXT,      "go on read the emails");      Log.v(getClass().getSimpleName(), "sPhotoUri=" + Uri.parse("file:/"+ sPhotoFileName));     emailIntent.putExtra(Intent.EXTRA_STREAM, Uri.parse("file:/"+ sPhotoFileName));     startActivity(Intent.createChooser(emailIntent, "Send mail..."));亚行日志:V/DumbDumpersMain( 3972):   sPhotoUri=file://sdcard/DumbDumpers/DumbDumper.jpgI/ActivityManager(   56):   Starting activity: Intent { action=android.intent.action.CHOOSER comp={android/com.android.internal.app.ChooserActivity} (has extras) }I/ActivityManager(   56):   Starting activity: Intent { action=android.intent.action.SEND type=jpeg/image flags=0x3000000 comp={com.google.android.gm/com.google.android.gm.ComposeActivityGmail} (has extras) }I/ActivityManager(   56):   Starting activity: Intent { action=android.intent.action.SEND type=jpeg/image flags=0x2800000 comp={com.google.android.gm/com.google.android.gm.ComposeActivity} (has extras) }D/gmail-ls(  120):      MailProvider.query: content://gmail-ls/labels/me@gmail.com(null, null)D/Gmail   ( 2507):      URI FOUND:file://sdcard/DumbDumpers/DumbDumper.jpg看起来电子邮件提供者正在附加一个0长度的文件。当我检查文件系统时,文件就在那里并进行更正。创建图像文件的代码在尝试发送电子邮件之前已经完成。有人在没有魔法重启的情况下修复了这个(我已经试过了)?问候,鱼鳍更新对我来说应该是file:///sdcard/DumbDumpers/DumbDumper.jpg你需要额外的/因为这指向根目录,即:file:// + /sdcard/DumbDumpers/DumbDumper.jpg合并为file:///sdcard/DumbDumpers/DumbDumper.jpg在上面的片段中,您需要:emailIntent.putExtra(Intent.EXTRA_STREAM, Uri.parse("file://"+ sPhotoFileName));

桃花长相依

只是我身边的一点评论。我在Gmail上也遇到了同样的问题,但是当我首先将所讨论的文件存储在SD卡上,然后从那里而不是从资产中检索它时,它似乎就起作用了。所以我的代码如下:Intent i = new Intent(Intent.ACTION_SEND);i.putExtra(Intent.EXTRA_SUBJECT, "Title");i.putExtra(Intent.EXTRA_TEXT, "Content");i.putExtra(Intent.EXTRA_STREAM, uri);i.setType("text/plain");startActivity(Intent.createChooser(i, "Send mail"));在这里,uri = Uri.fromFile(new File(context.getFilesDir(), FILENAME));是吗?不工作,而uri = Uri.fromFile(new File(Environment.getExternalStorageDirectory(), FILENAME));的确如此。

月关宝盒

使用“Uri.fromFile(新的File(Environment.getExternalStorageDirectory(),”文件名“)代替”Uri.parse“getExternalStorageDirectory()-到sdCard或任何其他外部存储的路径
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Android