2012-07-03 4 views

Odpowiedz

23

Zasadniczo próbujesz mieć niestandardową kompilację AOSP, gdzie "Dom" jest Twoją aplikacją. Jeśli zajrzysz do /packages/apps/Launcher2, znajdziesz kod domyślnego ekranu głównego.

Jeśli spojrzeć na AndroidManifest.xml pliku w tam, zobaczysz coś takiego:

 <activity 
     android:name="com.android.launcher2.Launcher" 
     android:launchMode="singleTask" 
     android:clearTaskOnLaunch="true" 
     android:stateNotNeeded="true" 
     android:theme="@style/Theme" 
     android:screenOrientation="nosensor" 
     android:windowSoftInputMode="stateUnspecified|adjustPan"> 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 
      <category android:name="android.intent.category.HOME" /> 
      <category android:name="android.intent.category.DEFAULT" /> 
      <category android:name="android.intent.category.MONKEY"/> 
     </intent-filter> 
    </activity> 

essentialy, to mówi, że działalność ta reaguje na

Androida .intent.category.HOME intent.

Po zakończeniu rozruchu systemu (w szczególności menedżer ActivityManager) wysyła tę intencję. Jeśli chcesz, aby aplikacja uruchamiała się zamiast Launchera, po prostu utwórz aplikację z podobnym filtrem zamiaru i usuń domyślny Launcher2 (usuń go z listy w build/target/product/generic.mk i umieść twoje zamiast). Również upewnić się, że odpowiedni plik .mk ma coś takiego:

LOCAL_OVERRIDES_PACKAGES := Home 

Dopóki aplikacja nie zapewnia sposób, aby użytkownik mógł uruchomić inne aplikacje za pomocą ikony (jak Launcher robi), nie ma innych aplikacji Zacznie się; chyba że coś wysyła intencję rozpoczęcia działalności z innej ścieżki niż kontrolowana przez twoją aplikację - powiedzmy, używając polecenia "am" na powłoce Androida celu.

+0

co za wspaniała odpowiedź !!! Mam z tego więcej niż cały dokument czytający numer –

+0

"Home" w 'LOCAL_OVERRIDES_PACKAGES: = Home' aplikacji, z którą zamieniasz Launcher2 na? –

+0

Myślę, że 'Home' jest nazwą modułu bieżącego programu uruchamiającego używanego w AOSP. Być może stary system Android używał do tego celu modułu Home, obecnie jest Launcher2. Dlatego też powinno się używać 'LOCAL_OVERRIDES_PACKAGES: = Launcher3', a nawet' LOCAL_OVERRIDES_PACKAGES: = Launcher2 Launcher3'. Cyanogenmod 12 używa wyrzutni Trebuchet, więc do budowy CM użyłbym 'LOCAL_OVERRIDES_PACKAGES: = Launcher3 Trebuchet' – Mixaz

3

W zależności od brzmienia pytania chcesz utworzyć własną kompilację systemu operacyjnego Android. To będzie bardziej skomplikowane niż rozwijanie zwykłych aplikacji na Androida, w związku z czym będziesz musiał dużo czytać, zwłaszcza kod źródłowy Android OS.

Polecam zacząć here at the Android Open Source Project.

3

Spójrz na źródło systemu odzyskiwania; jest to alternatywne środowisko rozruchowe, które jest znacznie, znacznie prostsze. Istnieją również wersje innych firm z obsługą ekranu dotykowego.

Powiązane problemy