2011-02-03 5 views
5

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

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

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

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

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

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

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

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

Thanx заранее, Стефано

Edit: Добавлена ​​новая информация. Я смотрел на 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]} 

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

ответ

6

Понял, как я это сделал.

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

Это интересно. Будет ли это на самом деле вернуть вас туда, где вы остановились во вторичных приложениях, запущенных из основного приложения (приборной панели)? Если это так, это хороший материал, чтобы знать! – ice911

+0

@ ice911 Он делает точный, что вы описываете, кажется, андроид подтягивает приложение в том состоянии, в котором оно было. Я протестировал это на эмуляторе, связке g2 и вкладке галактики, и он работает на всех них. Имена 'activityName' im, обозначаемого как обозначенная как main в манифесте. – blindstuff

+0

Удивительно. Работает как шарм. –

0

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

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

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

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

+0

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

+0

Я хотел бы, чтобы пользователь мог использовать приложение, но, например, когда он нажимает на кнопку «домой», вернитесь в панель управления и продолжайте использовать приложение там, где оно было. – blindstuff

+1

'скорее просто запустите другое приложение в том, что когда-либо его деятельность оставила. Это не так, как работает андроид. – Falmarri

0

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

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