2011-01-22 10 views
13

Wszystkie moje aplikacje mają ten sam sharedUserId. Chciałbym rozpocząć klasę innej aplikacji przy użyciu klasy mojej bieżącej aplikacji. Chcę używać dodatków intencyjnych, ale nie chcę używać zamierzonych adresów URL. Ja też wolałbym nie zmieniać aplikacji AndroidManifest mojej aplikacji docelowej.Android Intents: Rozpocznij aktywność, używając nazwy klasy z innej aplikacji z tym samym sharedUserId

+2

"Wszystkie moje aplikacje mają ten sam identyfikator sharedUserId", co bardzo bym tego nie zasugerował. – Falmarri

+0

Z punktu widzenia użytkownika konieczne jest również logowanie się do jednej aplikacji w innych. Mogę zablokować plik cookie logowania do mojego sharedUserId lub udostępnić go publicznie wszystkim aplikacjom. Ponadto nie można zejść z drogi dodać sharedUserId do aplikacji, która nie ma takiego, bez konieczności odinstalowywania i utraty danych (chyba że naprawią to w przyszłych wydaniach). @Falmarri, Odkładając to na bok, nadal chciałbym wiedzieć, dlaczego nie należy używać sharedUserId. –

Odpowiedz

30

Jest to całkiem łatwe, ponieważ masz zestaw sharedUserId.

Intent res = new Intent(); 
String mPackage = "com.your.package"; 
String mClass = ".actYouAreLaunching"; 
res.setComponent(new ComponentName(mPackage,mPackage+mClass)); 
startActivity(res); 

I to wszystko, co do niego należy. Możesz dodać dodatki intencyjne, tak jak zwykle.

+0

możesz pominąć 'nową nazwę komponentu (...)' używając 'Intent.setClassName (String pack, String className)' –