簡體   English   中英

如何在AOSP中的啟動器之前添加我的應用程序

[英]How to add my application before launcher in AOSP

如何在AOSP中修改啟動順序:我將在啟動Launcher2應用程序之前添加自定義應用程序(注冊應用程序 - 登錄名和密碼,將發送到服務器以進行授權)。 我怎樣才能做到這一點? 我知道ActivityManager管理要啟動的Activity,但我不知道應該在哪里開始我的應用程序。 我需要在android系統啟動完成后立即啟動我的應用程序。

在ICS中, ActivityManagerService有一個名為startHomeActivityLocked的方法。 在該方法中, ActivityManagerService將通過發送android.intent.category.HOME意圖來啟動Launcher2應用程序。

boolean startHomeActivityLocked(int userId) {
    ....
    intent.setComponent(mTopComponent);
        if (mFactoryTest != SystemServer.FACTORY_TEST_LOW_LEVEL) {
            intent.addCategory(Intent.CATEGORY_HOME);
        }
        ActivityInfo aInfo =
            resolveActivityInfo(intent, STOCK_PM_FLAGS, userId);
        if (aInfo != null) {
            intent.setComponent(new ComponentName(
                    aInfo.applicationInfo.packageName, aInfo.name));
            // Don't do this if the home app is currently being
            // instrumented.
            aInfo = new ActivityInfo(aInfo);
            aInfo.applicationInfo = getAppInfoForUser(aInfo.applicationInfo, userId);
            ProcessRecord app = getProcessRecordLocked(aInfo.processName,
                    aInfo.applicationInfo.uid);
            if (app == null || app.instrumentationClass == null) {
                intent.setFlags(intent.getFlags() | Intent.FLAG_ACTIVITY_NEW_TASK);
                mMainStack.startActivityLocked(null, intent, null, aInfo,
                        null, null, 0, 0, 0, 0, null, false, null);
            }
        }
}

因此,您可以在該方法中或在該方法的調用站點之前添加代碼。 特別是,您可以替換intent以使ActivityManagerService啟動您的應用程序,而不是Launcher。 當您的應用程序完成身份驗證后,您可以讓應用程序向Launcher2發送意圖。

在gingerbread中,方法簽名是boolean startHomeActivityLocked()因為Android在此構建中不支持多個用戶。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM