Android Запуск или вывод другого приложения через Intent - PullRequest
5 голосов
/ 04 февраля 2011

У меня проблемы с тем, чтобы заставить это работать, вот краткий обзор идеи.

Во-первых, я не могу изменить логику этого, это было конкретное требование от клиента, я понимаю, что с любымтакой инструмент, как AnyCut, его можно обойти, но это не имеет значения.

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

Давайте возьмем два приложения, чтобы решить идею.Приложение панели инструментов (A) и приложение получения (B).

Я хочу установить фильтр намерений (я думаю) в приложении B, чтобы при каждом входе в приложение A щелкать значок приложения B на значкеПриложение будет запущено или запущено с того места, где оно было запущено.

Возможно ли это?Если так, как я могу это сделать?Мне удалось запустить его, запустив одно действие в приложении, используя:

Intent i = new Intent();
i.setClassName("PACKAGE_NAME","SPECIFIC_CLASS");
startActivity(i);

Но это не то поведение, которое мне нужно, так как приложение B всегда запускается в одном месте.

Заранее спасибо, Стефано

Редактировать: Добавлена ​​новая информация.Я смотрел на DDMS.

Если я запускаю приложение с нуля через основной модуль запуска Android, цель точно такая же, как когда я оставляю кнопку «Домой» нажатой, а затем только выводю приложение на передний план,во что бы то ни стало я вовлечен. Так что до сих пор я безуспешно пытался воспроизвести это намерение.

INFO/ActivityManager(1292): Starting activity: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10200000 cmp=com.example.package/.uiPackage.Activity}

Вот как AnyCut делает это

Intent { act=android.intent.action.VIEW flg=0x10000000 cmp=com.example.package/.uiPackage.Activity bnds=[125,242][235,360]}

Любая идея, как я могу поступитьо создании того же намерения?Я даже не могу найти этот флаг в Intent API.

Ответы [ 3 ]

7 голосов
/ 04 февраля 2011

Разобрался, вот как я это сделал.

Intent i = new Intent();
i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
i.setAction("android.intent.action.VIEW");
i.setComponent(ComponentName.unflattenFromString("com.example.package/com.example.package.activityName"));
startActivity(i);
0 голосов
/ 07 февраля 2011

Я думаю, что при переключении действий действие по умолчанию для Android состоит в том, чтобы приостановить или удержать действие в его состоянии, и пользователь оставил его последним.Я знаю, что есть способ сделать так, чтобы состояние не сохранялось при переключении действий, но я не могу вспомнить это на макушке.

0 голосов
/ 04 февраля 2011

Я не совсем уверен, что слежу за ожидаемыми результатами, которые вы хотите увидеть, но следующее запустит приложение из панели мониторинга и удалит панель из стека активности, оставив выбранное приложение запущенным:

Intent i = new Intent();
i.setClassName("PACKAGE_NAME","SPECIFIC_CLASS");
i.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(i);

Я считаю, что это должно запустить приложение, как если бы вы запускали любое другое приложение.

Пожалуйста, добавьте больше информации о вашей логике, если это не то, что вы ищете.

...