2013-01-07 17 views
19

Piszę (legalny) program szpiegowski. Chcę, aby ten program był ukryty w programie uruchamiającym (tak, aby ikona nie była wyświetlana). Próbowałem usunąć linię <category android:name="android.intent.category.LAUNCHER" /> z AndroidManifest.xml, ale wtedy użytkownik nie może uruchomić aplikacji w trybie pierwszego uruchomienia (konfiguracji). Kto ma jakieś pomysły?Android ukryta aplikacja

Jak mogę to zrobić?

Odpowiedz

31

Musisz przekształcić aplikację w usługę. Oto Androidy wziąć na tworzenie składników usług:

http://developer.android.com/guide/components/services.html

Znaleziony to także na MobiWare:

Gdy chcesz śledzić korzystanie z telefonu komórkowego lub zebrać niektóre dane bez wiedzy użytkownika, to może pomóc ty.

Krok 1: Utwórz aplikację bez ikony. Zwykle działanie jest zadeklarowane w następujący sposób:

 <activity 
     android:label="@string/app_name" 
     android:name="org.security.tracker.Tracker-activity" > 
     <intent-filter > 
      <action android:name="android.intent.action.MAIN" /> 

      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 

Usuń kategorię TAG, nie będziesz już otrzymywać ikony aplikacji. Teraz nie potrzebujesz już aktywności. więc usuń ten segment. BUt możesz myśleć, w jaki sposób aplikacja będzie działać bez wyzwalacza lub jaki jest punkt początkowy aplikacji. To jest rozwiązanie.

<!-- Start the Service if applicable on boot --> 
    <receiver android:name="org.security.tracker.ServiceStarter" > 
     <intent-filter > 
      <action android:name="android.intent.action.BOOT_COMPLETED" /> 
     </intent-filter> 
    </receiver> 

To uruchamia twój kod, który został tam napisany przez Odbiorcę, możesz uruchomić usługę, aby zrealizować swoje przemyślenia.

<service android:name="org.security.tracker.serviceCode" /> 

Trzeba dodać to uprawnienie,

<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /> 

Twój kod działa, gdy telefon restartuje tylko.

Krok 2. Wpisz kod

Na Reboot The recevier zadziała, nie można uruchomić usługi.

class ServiceStarter extends BroadcastReceiver { 

@Override 
public void onReceive(Context _context, Intent _intent) { 

    Intent i = new Intent("com.prac.test.MyPersistingService"); 
    i.setClass(_context, ServiceCode.class); 
    _context.startService(i); 
    } 

} 
+6

Android studio nie będzie skompilować jeśli nie istnieje kategoria LAUNCHER w androidmanifest – Plugie

+0

Jak usługa kod zostanie wykonany, jeśli nie możesz uruchomić aplikacji, tylko studio Android nie zostanie skompilowane po raz pierwszy. – abh22ishek

+0

Nie otrzymuję żadnego połączenia w BroadcastReceiver, dopóki nie zacznę działać raz –

3

usunąć

<intent-filter > 
<action android:name="android.intent.action.MAIN" /> 
<category android:name="android.intent.category.LAUNCHER" /> 
</intent-filter> 

z pliku manifestu

+0

@AmitApollo, Nie ma potrzeby tworzenia usługi. – xoq

+5

Jak uruchomi się aplikacja? – Squonk

+2

@Squonk Nie jestem ekspertem, ale może odbiornik? –

0

można usunąć <category android:name="android.intent.category.LAUNCHER"/> z pliku AndroidManifest.xml.

Należy jednak pamiętać, aby dodać <category android:name="android.intent.category.LEANBACK_LAUNCHER"/> tak, że Android studio będą mogli skompilować aplikację (jeszcze ukryte przed wyrzutnią) :): D

Powiązane problemy