Разработка Android - начало деятельности с сервиса - PullRequest
0 голосов
/ 16 мая 2011

У меня есть немного кода, который прослушивает сообщение в сокете и анализирует данные из сокета в электронное письмо для отправки.Я могу создать намерение и установить для него флаг 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;
}

1 Ответ

1 голос
/ 17 мая 2011

Intent, который вы получите от createChooser(), может не иметь вашего флага. Попробуйте добавить его к результату createChooser().

Обратите внимание, что:

  • Наличие всплывающей службы - очень необычное действие, которое пользователь может отключить, поскольку оно может быть очень навязчивым.

  • Если сервис всплывающий, выбор паршивый UX. Вы искренне думаете, что ваши пользователи будут иметь представление о том, что происходит, когда это диалоговое окно выбора «Email» появляется из ниоткуда?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...