Về cơ bản, bạn đang cố gắng tạo bản dựng AOSP tùy chỉnh, trong đó "Trang chủ" là ứng dụng của bạn. Nếu bạn xem xét /gói/ứng dụng/Trình khởi chạy2, bạn sẽ tìm thấy mã cho Màn hình chính mặc định.
Nếu bạn nhìn vào AndroidManifest.xml tập tin trong đó, bạn sẽ thấy một cái gì đó như thế này:
<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, điều này nói rằng Hoạt động này phản ứng với
android .intent.category.HOME intent.
Khi hệ thống khởi động xong (ActivityManager cụ thể hơn), gửi ý định đó. Vì vậy, nếu bạn muốn ứng dụng của mình bắt đầu thay vì Trình khởi chạy, chỉ cần tạo cho mình một ứng dụng có bộ lọc ý định tương tự và xóa Trình khởi chạy mặc định2 (đưa nó ra khỏi danh sách trong xây dựng/mục tiêu/sản phẩm/generic.mk và đặt của bạn thay thế). Ngoài ra hãy chắc chắn rằng các tập tin có liên quan .mk có một cái gì đó như thế này:
LOCAL_OVERRIDES_PACKAGES := Home
Vì vậy, miễn là ứng dụng của bạn không cung cấp một cách cho người sử dụng để khởi động các ứng dụng khác sử dụng các biểu tượng (như Launcher không), không có ứng dụng khác Sẽ được bắt đầu; trừ khi tất nhiên một cái gì đó gửi một mục đích Khởi động hoạt động từ một số đường dẫn khác với đường dẫn được kiểm soát bởi ứng dụng của bạn - nói bằng cách sử dụng lệnh "am" trên vỏ Android của mục tiêu.
Nguồn
2012-07-04 15:45:19
câu trả lời tuyệt vời !!! Tôi nhận được nhiều hơn từ đây hơn là một doc toàn bộ đọc doc –
là 'Home' trong' LOCAL_OVERRIDES_PACKAGES: = Home' ứng dụng bạn đang thay thế Launcher2 bằng? –
Tôi nghĩ 'Home' là tên mô-đun của trình khởi chạy hiện tại được sử dụng trong AOSP. Có thể là phiên bản Android cũ được sử dụng cho mô-đun Home cho điều đó, ngày nay nó là Launcher2. Vì vậy, 'LOCAL_OVERRIDES_PACKAGES: = Launcher3' nên được sử dụng hoặc thậm chí' LOCAL_OVERRIDES_PACKAGES: = Launcher2 Launcher3'. CyanogenMod 12 sử dụng trình khởi chạy Trebuchet, vì vậy đối với bản dựng CM, tôi sẽ sử dụng 'LOCAL_OVERRIDES_PACKAGES: = Launcher3 Trebuchet' – Mixaz