K. Barresi
K. Barresi

Reputation: 1315

Android: Send MMS Message With Picture on SDCard

Hi so I'm trying to send an image (png) from the sdcard in an MMS message. I'm using the ACTION_SEND intent, but it doesn't seem to be working.

Intent sendIntent = new Intent(Intent.ACTION_SEND);
sendIntent.putExtra("sms_body", "Sent using Spootur");
sendIntent.setType("image/png");
sendIntent.putExtra(Intent.EXTRA_STREAM, Uri.parse(imagePath));
startActivityForResult(sendIntent, SEND_ACTIVITY);

I know that imagePath has a value of /mnt/sdcard/Spootur/Pictures/6799abd6-df22-4017-89e1-d9e529790fd8.png, which points to an existing file.

When the selection menu comes up, I select my messaging app (Handcent), but it gives me a "Sorry, you cannot add this picture to your message" error. I tried using other applications, and the overwhelming result I'm getting is that the resource I'm giving it is an "unsupported filetype". I don't know why this could be happening, since I'm explicitly setting the MIME type as a .png image.

Any ideas? Here are some of the logcat logs for various applications that are having troubles:

Email:

05-10 00:29:35.752: W/ActivityManager(343): Trying to launch com.android.email/.activity.MessageCompose
05-10 00:29:35.962: I/Database(24487): sqlite returned: error code = 0, msg = Recovered 12 frames from WAL file /data/data/com.android.email/databases/webview.db-wal
05-10 00:29:35.972: I/Database(24487): sqlite returned: error code = 0, msg = Recovered 26 frames from WAL file /data/data/com.android.email/databases/webviewCache.db-wal
05-10 00:29:36.072: W/System.err(24487):    at com.android.email.activity.MessageCompose.addAttachment(MessageCompose.java:6886)
05-10 00:29:36.072: W/System.err(24487):    at com.android.email.activity.MessageCompose.addAttachment(MessageCompose.java:6750)
05-10 00:29:36.072: W/System.err(24487):    at com.android.email.activity.MessageCompose.addAttachment(MessageCompose.java:7112)
05-10 00:29:36.072: W/System.err(24487):    at com.android.email.activity.MessageCompose.initFromIntent(MessageCompose.java:9160)
05-10 00:29:36.072: W/System.err(24487):    at com.android.email.activity.MessageCompose.onCreate(MessageCompose.java:854)
05-10 00:29:36.102: W/System.err(24487):    at com.android.email.Email.startServiceIfNeed(Email.java:659)
05-10 00:29:36.102: W/System.err(24487):    at com.android.email.Email.isServiceConnected(Email.java:723)
05-10 00:29:36.102: W/System.err(24487):    at com.android.email.Email.callWhenServiceConnected(Email.java:791)
05-10 00:29:36.102: W/System.err(24487):    at com.android.email.Email.registerListener(Email.java:883)
05-10 00:29:36.102: W/System.err(24487):    at com.android.email.Email.registerListener(Email.java:879)
05-10 00:29:36.102: W/System.err(24487):    at com.android.email.combined.SevenUtils.addListener(SevenUtils.java:35)
05-10 00:29:36.112: W/System.err(24487):    at com.android.email.Controller.addSevenListener(Controller.java:283)
05-10 00:29:36.112: W/System.err(24487):    at com.android.email.Controller.addResultCallback(Controller.java:275)
05-10 00:29:36.112: W/System.err(24487):    at com.android.email.activity.MessageCompose.onResume(MessageCompose.java:2457)
05-10 00:29:36.112: W/System.err(24487):    at com.android.email.Email.startServiceIfNeed(Email.java:659)
05-10 00:29:36.112: W/System.err(24487):    at com.android.email.Email.callWhenServiceConnected(Email.java:797)
05-10 00:29:36.112: W/System.err(24487):    at com.android.email.Email.registerListener(Email.java:883)
05-10 00:29:36.112: W/System.err(24487):    at com.android.email.Email.registerListener(Email.java:879)
05-10 00:29:36.112: W/System.err(24487):    at com.android.email.combined.SevenUtils.addListener(SevenUtils.java:35)
05-10 00:29:36.112: W/System.err(24487):    at com.android.email.Controller.addSevenListener(Controller.java:283)
05-10 00:29:36.112: W/System.err(24487):    at com.android.email.Controller.addResultCallback(Controller.java:275)
05-10 00:29:36.112: W/System.err(24487):    at com.android.email.activity.MessageCompose.onResume(MessageCompose.java:2457)
05-10 00:29:36.132: D/InputTransport(343): Input channel constructed: name='40710c08 com.android.email/com.android.email.activity.MessageCompose (server)', ashmemFd=288, receivePipeFd=336, sendPipeFd=328
05-10 00:29:36.132: D/InputTransport(343): Input channel constructed: name='40710c08 com.android.email/com.android.email.activity.MessageCompose (client)', ashmemFd=290, receivePipeFd=320, sendPipeFd=337
05-10 00:29:36.132: D/InputTransport(343): Input channel destroyed: name='40710c08 com.android.email/com.android.email.activity.MessageCompose (client)', ashmemFd=290, receivePipeFd=320, sendPipeFd=337
05-10 00:29:36.132: D/InputTransport(24487): Input channel constructed: name='40710c08 com.android.email/com.android.email.activity.MessageCompose (client)', ashmemFd=74, receivePipeFd=75, sendPipeFd=76
05-10 00:29:36.243: I/WindowManager(343):   CREATE SURFACE Surface(name=com.android.email/com.android.email.activity.MessageCompose, identity=1887, mNativeSurface=0) IN SESSION android.view.SurfaceSession@40a3fc10: pid=24487 format=-1 flags=0x0 / Window{40710c08 com.android.email/com.android.email.activity.MessageCompose paused=false}
05-10 00:29:36.353: I/ActivityManager(343): Displayed com.android.email/.activity.MessageCompose: +604ms

Messaging:

05-10 00:28:18.887: D/Mms/ConversationComposer(24350): [main][end]    initComposeMessage ------ 
05-10 00:28:18.917: V/Mms/ConversationComposer(24350): [main]getComposeMessageStatus(),state=0
05-10 00:28:18.917: V/Mms/ComposeMessage(24350): [main]initMessageList()
05-10 00:28:18.987: V/Mms/ComposeMessage(24350): [main]loadMessageContent()
05-10 00:28:19.007: W/System.err(24350):    at com.android.mms.ui.MessageUtils.isAnimatedImage(MessageUtils.java:2265)
05-10 00:28:19.007: W/System.err(24350):    at com.android.mms.data.WorkingMessage.setAttachment(WorkingMessage.java:601)
05-10 00:28:19.007: W/System.err(24350):    at com.android.mms.ui.ComposeMessage.addImage(ComposeMessage.java:6756)
05-10 00:28:19.007: W/System.err(24350):    at com.android.mms.ui.ComposeMessage.addMedia(ComposeMessage.java:6894)
05-10 00:28:19.007: W/System.err(24350):    at com.android.mms.ui.ComposeMessage.addMedia(ComposeMessage.java:6961)
05-10 00:28:19.007: W/System.err(24350):    at com.android.mms.ui.ComposeMessage.access$7500(ComposeMessage.java:198)
05-10 00:28:19.007: W/System.err(24350):    at com.android.mms.ui.ComposeMessage$45.run(ComposeMessage.java:4680)
05-10 00:28:19.007: E/Mms/media(24350):     at com.android.mms.data.WorkingMessage.changeMedia(WorkingMessage.java:2202)
05-10 00:28:19.007: E/Mms/media(24350):     at com.android.mms.data.WorkingMessage.setAttachment(WorkingMessage.java:658)
05-10 00:28:19.007: E/Mms/media(24350):     at com.android.mms.ui.ComposeMessage.addImage(ComposeMessage.java:6756)
05-10 00:28:19.007: E/Mms/media(24350):     at com.android.mms.ui.ComposeMessage.addMedia(ComposeMessage.java:6894)
05-10 00:28:19.007: E/Mms/media(24350):     at com.android.mms.ui.ComposeMessage.addMedia(ComposeMessage.java:6961)
05-10 00:28:19.007: E/Mms/media(24350):     at com.android.mms.ui.ComposeMessage.access$7500(ComposeMessage.java:198)
05-10 00:28:19.007: E/Mms/media(24350):     at com.android.mms.ui.ComposeMessage$45.run(ComposeMessage.java:4680)

Upvotes: 0

Views: 1966

Answers (1)

K. Barresi
K. Barresi

Reputation: 1315

I ended up finding the solution: it's looking for a file, not a content stream or straight URI. This made it work for me:

Intent sendIntent = new Intent(Intent.ACTION_SEND);
sendIntent.putExtra("sms_body", "Sent using Spootur");
sendIntent.setType("image/png");
sendIntent.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(new File(imagePath)));
startActivityForResult(sendIntent, SEND_ACTIVITY);

Hope this helps someone

Upvotes: 1

Related Questions