我有一些代码正在侦听套接字上的消息,并将套接字中的数据解析为要发送的电子邮件。我能够创造的意图,并设置FLAG_ACTIVITY_NEW_TASK标志就可以了,但是呢,当我打电话 startActivity(Intent.createChooser(intent, "Email"));
Android开发 - 从服务开始活动
我得到一个AndoridRuntimeException:从活动上下文之外调用startActivity()需要FLAG_ACTIVITY_NEW_TASK标志。这真的是你想要的吗?
什么混淆我在这是,我已经明确要求 intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
我失去的东西在这里很明显?
protected void doEmail(DataInputStream in) throws IOException {
String id = in.readUTF();
createEmail(id);
}
protected void createEmail(String rawEmailString) {
// need to get to, subject, body and path from string
String[] stringArray = rawEmailString.split("~");
Intent intent = prepareEmail(stringArray[0], stringArray[1], stringArray[2], stringArray[3]);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(Intent.createChooser(intent, "Email"));
}
public Intent prepareEmail(String to, String subject, String body, String pathToAttachment){
Intent intent = new Intent(Intent.ACTION_SEND);
intent.putExtra(Intent.EXTRA_EMAIL, to);
intent.putExtra(Intent.EXTRA_TEXT, body);
intent.putExtra(Intent.EXTRA_SUBJECT, subject);
intent.putExtra(Intent.EXTRA_STREAM, Uri.parse(pathToAttachment));
intent.setType("*/*");
return intent;
}
看起来正确。尝试一下startActivity(intent),而不是使用选择器。 – 2011-05-16 18:14:07
感谢罗比,这帮助我朝着正确的方向前进。现在它询问我是否想用电子邮件或Gmail打开。它会打开罚款,如果我选择Gmail,但如果我选择电子邮件,它会显示一个对话框阅读“应用程序电子邮件(进程com.google.android.email)意外停止。请再试一次。此语法不支持该标准电子邮件客户端? – Jeff 2011-05-16 18:23:29
是电子邮件应用程序中设置的电子邮件帐号? – 2011-05-16 18:28:04