У меня есть немного кода, который прослушивает сообщение в сокете и анализирует данные из сокета в электронное письмо для отправки.Я могу создать намерение и установить для него флаг FLAG_ACTIVITY_NEW_TASK, но все же, когда я вызываю startActivity(Intent.createChooser(intent, "Email"));
, я получаю исключение AndoridRuntimeException: для вызова startActivity () вне контекста Activity требуется 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;
}