我只想给gmail发送一个带有图片附件的意图。以下代码在所有4.0+设备上运行良好,但在我的摩托罗拉Razr2.3上失败。为什么?如何让它在4.0以下的设备上工作?
我有以下代码:
public class SimpleEmailAttachmentActivity extends Activity {
private static final String sFileName = "myfile.png";
private Bitmap bitmap;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_simple_email_attachment);
final Button button = (Button) findViewById(R.id.email_snapshot_button);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View paramView) {
View rootView = button.getRootView();
if(rootView != null) {
rootView.setDrawingCacheEnabled(true);
Bitmap drawingCache = rootView.getDrawingCache();
bitmap = Bitmap.createBitmap(drawingCache);
rootView.setDrawingCacheEnabled(false);
}
saveToInternalStorage(bitmap);
File file = new File(getFilesDir() + File.separator + sFileName);
Uri uri = Uri.fromFile(file);
Intent intent = new Intent(Intent.ACTION_SEND);
intent.putExtra(Intent.EXTRA_EMAIL, new String[]{"blah@blah.com"});
intent.putExtra(Intent.EXTRA_SUBJECT, "email subject here");
intent.putExtra(Intent.EXTRA_TEXT, "email body here");
intent.putExtra(Intent.EXTRA_STREAM, uri);
intent.setType("plain/text");
startActivity(intent);
}
});
}
private void saveToInternalStorage(Bitmap bitmap){
FileOutputStream fos;
try {
fos = openFileOutput(sFileName, Context.MODE_WORLD_READABLE);
bitmap.compress(Bitmap.CompressFormat.PNG, 90, fos);
fos.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}发布于 2013-10-10 12:02:17
使用此示例发送带有附件的电子邮件
public class MailImageFile extends javax.mail.Authenticator {
public MailImageFile(){}
public void Mail(String user, String pass) {
Properties props = new Properties();
props.put("mail.smtp.host", "smtp.gmail.com");
props.put("mail.smtp.socketFactory.port", "465");
props.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
props.put("mail.smtp.auth", "true");
props.put("mail.smtp.port", "465");
Session session = Session.getDefaultInstance(props, new javax.mail.Authenticator() {
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication("abc@gmail.com", "pqr123%");
}
});
try {
Message message = new MimeMessage(session);
message.setFrom(new InternetAddress("abc@gmail.com"));
message.setRecipients(Message.RecipientType.TO, InternetAddress.parse("xyz@gmail.com"));
message.setContent(_multipart);
message.setSubject("Testing Subject");
message.setContent("Hi...", "text/html; charset=utf-8");
Transport.send(message);
} catch (MessagingException e) {
throw new RuntimeException(e);
}//这里有这个解决方案表
private Multipart _multipart;
_multipart = new MimeMultipart();
public void addAttachment(String filename,String subject) throws Exception {
BodyPart messageBodyPart = new MimeBodyPart();
DataSource source = new FileDataSource(filename);
messageBodyPart.setDataHandler(new DataHandler(source));
messageBodyPart.setFileName(filename);
_multipart.addBodyPart(messageBodyPart);
BodyPart messageBodyPart2 = new MimeBodyPart();
messageBodyPart2.setText(subject);
_multipart.addBodyPart(messageBodyPart2);
}
}https://stackoverflow.com/questions/19286814
复制相似问题