共享图像仅适用于Facebook但不适用于推特或电子邮件

时间:2012-02-01 20:14:17

标签: android

我实现了在StackOverflow上搜索时看起来像其他任何内容的共享代码。

String pathToExportedFile = getPath();

// Export for share
Intent share = new Intent(Intent.ACTION_SEND);
share.setType("image/jpeg");

share.putExtra(Intent.EXTRA_STREAM,
  Uri.parse("file:///" + pathToExportedFile));

share.putExtra(Intent.EXTRA_SUBJECT, "See Attachment");

model.activity.startActivity(Intent.createChooser(share, "Select a way to Share"));

然而,它仅适用于Facebook。当我选择gmail时,看起来它是附加的但是当我接收电子邮件时没有附件。当我通过Twitter做到这一点时,它说它无法找到附件。

附加的图像文件位于“sdcard \ DCIM \ Camera”

请帮忙,

-mL

更新

我的文件路径很好,但看起来gmail是垃圾收集它?以下是一些选择的ADB日志:

02-01 16:36:46.720: D/Gmail(1896): Cached file:///mnt/sdcard/DCIM/Camera/1328132065637.jpg to /data/data/com.google.android.gm/cache/2012-02-01-16:36:46428133821.attachment
02-01 16:36:46.880: D/Gmail(1896): MailProvider.insert(): added local message 140
02-01 16:36:47.100: I/Gmail(1896): MainSyncRequestProto: lowestBkwdConvoId: 0, highestHandledServerOp: 554429, normalSync: true
02-01 16:36:49.900: I/Gmail(1896): MainSyncRequestProto: lowestBkwdConvoId: 0, highestHandledServerOp: 554462, normalSync: true
02-01 16:36:51.650: D/Gmail(1896): Cleaning up cached attachment: /data/data/com.google.android.gm/cache/2012-02-01-16:36:46428133821.attachment
02-01 16:36:51.650: D/Gmail(1896): Updating message 1392647555039793989. synced=true
02-01 16:36:52.230: I/Gmail(1896): MainSyncRequestProto: lowestBkwdConvoId: 0, highestHandledServerOp: 554477, normalSync: true

任何人都有线索?

1 个答案:

答案 0 :(得分:0)

类似的问题:Trying to attach a file from SD Card to email

也遇到同样的问题 (...)

来自adb logcat:

V/DumbDumpersMain( 3972):   sPhotoUri=file://sdcard/DumbDumpers/DumbDumper.jpg
I/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));

我希望这会有所帮助。我花了很长时间来调试。

的问候,
芬雷