2011-02-03 11 views
5

Mam problem z uruchomieniem tej funkcji, oto krótki przegląd pomysłu.Android Uruchamianie lub wywoływanie innej aplikacji za pośrednictwem Intent

Po pierwsze, nie mogę zmienić logiki stojącej za tym, był to specyficzny wymóg klienta, zdaję sobie sprawę, że za pomocą dowolnego narzędzia takiego jak AnyCut można go ominąć, ale to nie ma znaczenia.

Mój klient oferuje pakiet aplikacji. Chodzi o to, że wszystkie aplikacje dzwoniące do pakietu będą uruchamiane z poziomu aplikacji "Pulpit nawigacyjny", więc pokazuję tylko aplikację Panel w głównym programie uruchamiającym, a nie wszystkie ikony aplikacji.

Pozwala wziąć dwie aplikacje, aby rozwiązać ten pomysł. Aplikacja pulpitu nawigacyjnego (A) i aplikacja do odbierania (B).

Chcę ustawić filtr zamiany (myślę) w aplikacji B, tak aby za każdym razem, gdy wchodzę do aplikacji A, i kliknę ikonę aplikacji B, aplikacja zostanie uruchomiona lub uruchomiona z miejsca, w którym została wypuszczona (przeniesiona do przodu)).

Czy to możliwe? Jeśli tak, jak mogę to zrobić? Udało mi się go uruchomić przez specjalnie uruchomienie jedną aktywność w aplikacji przy użyciu:

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

Ale isnt zachowanie, które chcę, jak to zawsze zaczyna aplikacji B w tym samym miejscu.

Niż z góry, Stefano

Edit: dodano kilka nowych informacji. Przyjrzałem się DDMS.

Jeśli uruchomię aplikację od podstaw przez główny program uruchamiający Androida, cel jest dokładnie taki sam, jak po naciśnięciu przycisku strony głównej, a następnie przeniesieniu aplikacji tylko do przodu. rozmnażaj, aż do tej pory, ten zamiar.

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

ten sposób AnyCut robi

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

Jakiś pomysł jak mogę iść o tworzeniu że dokładnie w tej samej intencji? Nie mogę nawet znaleźć tej flagi w interfejsie API Intent.

Odpowiedz

6

Wyobraziłem to, tak to zrobiłem.

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

To jest interesujące. Czy to rzeczywiście przeniesie Cię do miejsca, w którym skończyłeś w dodatkowych aplikacjach uruchomionych w głównej aplikacji (pulpit)? Jeśli tak, to dobrze wiedzieć! – ice911

+0

@ ice911 Robi exacty, co opisujesz, wygląda na to, że android ściąga aplikację w takim stanie, w jakim była. Przetestowałem to na emulatorze, nexus one a g2 i kartę galaktyki i działa na nich wszystkich. Nazwa "activityName" odnosi się do tej, która została zaznaczona jako główna w manifeście. – blindstuff

+0

Niesamowite. Działa jak marzenie. –

0

nie jestem całkiem pewien Obserwuję oczekiwanych rezultatów, które chcesz zobaczyć, ale po to uruchomić aplikację z deski rozdzielczej i wyjąć deskę rozdzielczą ze stosu działalności pozostawiając wybraną aplikację uruchomione:

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

Uważam, że powinno to uruchomić aplikację tak, jakbyś uruchamiał inną aplikację.

Proszę dodać więcej informacji na temat logiki, jeśli nie jest to to, czego szukasz.

+0

Nie dokładnie to, czego szukam, przepraszam, nie chcę określać klasy, którą chcę otworzyć, a raczej po prostu wywołać inną aplikację w czasie, w którym ta aktywność została przerwana. – blindstuff

+0

Chciałbym, aby użytkownik mógł korzystać z aplikacji, ale na przykład, gdy kliknie w stronę domową, a następnie wrócić do pulpitu nawigacyjnego i kontynuować korzystanie z aplikacji w miejscu, w którym się znajdował. – blindstuff

+1

'raczej po prostu wywołaj inną aplikację w jakiejkolwiek czynności, która została przerwana' Nie tak naprawdę działa Android – Falmarri

0

myślę, że po przełączeniu działań akcja domyślna Android jest rodzaj pauzy lub posiadają aktywność w jego stanie użytkownik opuścił go w końcu. Wiem, że jest sposób, aby to uczynić, aby państwo nie zostało uratowane podczas zmiany działalności, ale nie pamiętam tego z mojej strony.

Powiązane problemy