У меня есть служба, которую я повторно использую (это одновременно "привязанная" и "запущенная" служба) в моем собственном приложении, потому что она выполняет сбор полезных данных Интересно. Все работало но заметил проблему. В этом коде создается исключение:
Intent dialogIntent = new Intent();
dialogIntent.setClassName(service.getBaseContext(), "com.mycompany.receiver.ui.DialogActivity"); // names changed to protect the innocent
dialogIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP | Intent.FLAG_ACTIVITY_NEW_TASK);
dialogIntent.putExtra("message", message);
service.getApplicationContext().startActivity(dialogIntent);
Исключение предупреждает о «неизвестной активности» и «вы проверили манифест». Это не вызвано тем, что я не поместил активность в манифест. Фактически, здесь действительно должно быть исключение, потому что в моем приложении нет этого действия! Это упражнение было написано для исходного приложения. Я сначала этого не заметил, потому что этот код срабатывает только тогда, когда собранные данные выходят за пределы определенного диапазона.
Я могу изменить код службы, но служба и исходное приложение должны продолжать работать, как раньше. Просто в моем приложении меня не особо интересует всплывающая активность для этого конкретного сообщения (для меня это не так важно).
Я действительно думал об этом, и я мог просто бросить блокировку try / catch вокруг всего. Но это кажется немного взломанным. Если что-то еще не так в исходной паре приложение / сервис, я хочу знать об этом. Я пришел к следующим идеям, и мне нужна рука помощи, чтобы указать мне правильное направление.
Меня интересует 1-3 (для общих знаний и для решения этой проблемы), но 2, вероятно, является наиболее полезным . В конце концов, к службе может быть привязано несколько приложений, и я не уверен, что хочу вывести исходное приложение на передний план, а не свое собственное только из-за этого сообщения. И наконец.... Забудь все, что я сказал, и 4. Как бы вы решили эту проблему?
У меня такая же очень похожая проблема в другом месте кода:
Intent toLaunch = new Intent();
toLaunch.setClassName(context, "com.mycompany.receiver.ui.BankingActivity");
toLaunch.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP);
PendingIntent intentBack = PendingIntent.getActivity(context, 0, toLaunch, PendingIntent.FLAG_CANCEL_CURRENT);
notify.setLatestEventInfo(context, title, message, intentBack);
notifier.notify(NOTIFY_1, notify);
Эта не вызывает исключения; он выводит уведомление, и когда я нажимаю на него, запускается исходное приложение. На самом деле это может быть нормально, но, опять же, было бы неплохо не иметь этого (или, возможно, компромисс - уведомить уведомителя, если приложение хотя бы привязано, но не обязательно на переднем плане). Мысли?
Большое спасибо, Dave