Способы вывода приложения Android в фоновом режиме на передний план

Вот сценарий:

AndroidManifest.xml определяет одну активность сandroid:launchMode="singleTask", (Это означает, что в течение всего жизненного цикла приложения в стеке должно быть одно действие, верно?)

В течениеActivity.onCreate()Приемник радиопередачи создается программно и прослушивает входящие SMS. Приемник остается активным даже послеActivity.onPause() по дизайну.

Когда пользователь завершает работу с приложением, он нажимает кнопку «Домой» на устройстве.Activity.onPause() и приложение исчезает. Устройство покажет домашний экран Android.

Получив SMS, получатели рассылки получают SMS и пытаются показать Активность через:

Intent it = new Intent(context, Akami.class);
it.setAction(Intent.ACTION_MAIN);
it.addCategory(Intent.CATEGORY_LAUNCHER);
it.setComponent(new ComponentName(context.getPackageName(), "MyActivity"));
it.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(it);

Тем не менее, активность НЕ отображается для пользователя.

а) почему?б) Каковы возможные способы вывести Активти на первый план?
 ian.shaun.thomas11 окт. 2012 г., 13:18
Не понятно в чем проблема. Разве деятельность не выходит на первый план? Есть ли сбой?
 David Andreoletti15 окт. 2012 г., 07:25
@tencent: я отредактировал свой пост. Да, активность НЕ выходит на первый план. Без падений.

Ответы на вопрос(2)

Решение Вопроса

MyMainActivity определение (AndroidManifest.xml):

<intent-filter>
 <action android:name="intent.my.action">
 <category android:name="android.intent.category.DEFAULT">
</category></action></intent-filter>

Программно вывести приложение на передний план:

Intent it = new Intent("intent.my.action");
it.setComponent(new ComponentName(context.getPackageName(), MyMainActivity.class.getName()));
it.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.getApplicationContext().startActivity(it);

Замечания:context.startActivity(it) не будет работать, когдаcontext объект - это то же самое, что и деятельность, которую вы хотите развить.

 Mudassir Khan05 сент. 2018 г., 15:32
Привет, сэр, у меня та же проблема, я хочу открыть скайп через намерение, которое он открывает впервые. но при попытке открыть его в считанные секунды .it не выдал никакой ошибки и ни как не открывается, как я могу решить эту проблему

то, что вы говорите, правильно, имейте BroadcastReciever и инициируйте намерение в своей Деятельности, чтобы вывести его на передний план. Однако предостережение относительно жизненного цикла Деятельности.

ОС Android может перенести вашу активность с onPause () на onStop () и onDestroy () в зависимости от системных ресурсов. Так что в таком случае ваш вызывающий Activity будет перезапущен снова, поэтому примите меры предосторожности там. Иначе, очень легко столкнуться с NullPointerExceptions

Ваш ответ на вопрос