经过不断的测试最终得到3个结果:
1.适用于模拟器和OPhone
1
Intent sendIntent = new Intent(Intent.ACTION_SEND);
2
sendIntent.putExtra(Intent.EXTRA_STREAM, Uri.parse("file:///sdcard/map.jpg"));
3
sendIntent.setType("image/jpeg");
4
startActivity(sendIntent);

2

3

4

2.适用于Hero(未测试是否支持其他HTC手机)
1
Intent sendIntent = new Intent("android.intent.action.SEND_MSG");
2
sendIntent.putExtra(Intent.EXTRA_STREAM, Uri.parse("file:///sdcard/map.jpg"));
3
sendIntent.setType("image/jpeg");
4
startActivity(sendIntent);

2

3

4

3.目前为止在多数手机上工作正常的代码
1
Intent intent = new Intent(Intent.ACTION_SEND);
2
intent.setClassName("com.android.mms", "com.android.mms.ui.ComposeMessageActivity");
3
intent.putExtra(Intent.EXTRA_STREAM, Uri.parse("file:///sdcard/map.jpg")); // imageUri set previously
4
intent.setType("image/jpeg");
5
startActivity(intent);

2

3

4

5

需要注意的一个问题是之前一直用Uri指向自己开发应用的data文件夹下的文件,始终无法成功,最终换成sdcard就OK了,看来还是权限的问题。