[英]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.