2013-03-08 3 views
3

Я ищу способ запустить другое приложение из своего приложения, но так, чтобы фокус не был изменен из моего приложения в приложение.Создать новое намерение в фоновом режиме

I.e В настоящее время у меня есть новое приложение, запущенное с намерением, однако, когда это выполняется, новое приложение запускается и становится приложением в поле зрения, мне нужно, чтобы оно хранилось в фоновом режиме, пока мое приложение все еще находится в поле зрения.

Причина этого? Я разрабатываю приложение для внутреннего использования, которое будет действовать как блокирующий экран для устройства, поэтому, хотя в фоновом режиме должно происходить что-то вроде «блокировки экрана», всегда должно быть сверху.

Я провел некоторое исследование намерений и запуск других приложений, но не могу найти ничего о том, что мне нужно.

Надеюсь, вы сможете помочь вам!

В настоящее время терминал называется так:

Intent intent = new Intent(Intent.ACTION_MAIN); 
    intent.setComponent(new ComponentName("jackpal.androidterm", "jackpal.androidterm.RemoteInterface")); 
    intent.setAction("jackpal.androidterm.RUN_SCRIPT"); 
    intent.putExtra("jackpal.androidterm.iInitialCommand", cmdString); 

Причина, по которой должен быть запущен в фоновом режиме, так что приложение может выполнять команды в терминале без пользователя, имеющего доступ, но затем они «разблокировать 'экран, в котором они нуждаются, чтобы иметь возможность просматривать терминал и какие команды запускаются и т. д.

+0

Этот проект может быть отправной точкой. В нем также описывается, что изменилось в отношении версий Android, и упоминает приложения, которые реализуют функции блокировки экрана для новых версий Android. Вы можете посмотреть. http://code.google.com/p/mylockforandroid/ –

+0

Спасибо, что посмотрим на это –

+0

@ZacPowell. У меня та же проблема. Как вы это решили? – Swetha

ответ

1

Это будет невозможно, вам нужно будет начать фон Service, который выполняет фактическую работу и запускает только Activity. хотите перейти, как только ваш передний план Activity будет завершен. В зависимости от вашей архитектуры вы можете сохранить Activity, чтобы позвонить, когда закончится передний план Activity и измените его из службы. Таким образом, у вас будет ваше желание, без фактического вызова Activity.

+0

Деятельность, которую мне нужно запустить в фоновом режиме, - это окно терминала (https://github.com/jackpal/Android-Terminal-Emulator/wiki), поэтому lockscreen всегда будет сверху (по крайней мере, до его разблокировки), но терминал должен быть запущен в фоновом режиме. –

+0

Хорошо, вам нужно объяснить немного больше, почему «Активность» должна быть запущена в фоновом режиме. Если пользователь не увидит пользовательский интерфейс, тогда нет смысла использовать «Активность» для этого – Thrakbad

+0

. Я уверен, что будет возможно хотя бы приблизиться к тому, что хочет @ZacPowell, даже без специального (который может по-прежнему быть подходящим, учитывая, что это приложение для «внутреннего использования»). –

1

Вы не можете startActivity в Background.Instead начать деятельность и минимизировать активность (в вашем случае эта деятельность различного применения) с использованием moveTaskToBack(true);

В вашем случае, поставить условие на основе вашего намерения и его Params и используйте moveTaskToBack(true);, чтобы активность была минимизирована только при запуске приложения.

0

В дополнение к ответу от @Meher, в целях вашей текущей стартовой деятельности вы можете добавить флаг FLAG_FROM_BACKGROUND. С этим вы избавляетесь от эффекта «мигания» (тот, где ваша активность отображается в течение одной доли секунды, пока он обнаруживает, что для перехода на задний план)

Смежные вопросы