Android 8.1 预置应用开机自启动
近来接到项目需求,要求将预置应用设置为开机自启动,具体修改参照如下:
方法一:
/packages/apps/Launcher3/src/com/android/launcher3/model/LoaderTask.java
private void loadWorkspace() {
if (LauncherAppState.PROFILE_STARTUP) {
Trace.beginSection("Loading Workspace");
}
final Context context = mApp.getContext();
final ContentResolver contentResolver = context.getContentResolver();
final PackageManagerHelper pmHelper = new PackageManagerHelper(context);
final boolean isSafeMode = pmHelper.isSafeMode();
final boolean isSdCardReady = Utilities.isBootCompleted();
final MultiHashMap<UserHandle, String> pendingPackages = new MultiHashMap<>();
boolean clearDb = false;
try {
ImportDataTask.performImportIfPossible(context);
} catch (Exception e) {
// Migration failed. Clear workspace.
clearDb = true;
}
+ Intent startIntent = new Intent();
+ startIntent.setClassName("uAppPackageName","uAppActivityName");
+ context.startActivity(startIntent);
if (!clearDb && GridSizeMigrationTask.ENABLED &&
!GridSizeMigrationTask.migrateGridIfNeeded(context)) {
// Migration failed. Clear workspace.
clearDb = true;
}
方法二:
/frameworks/base/services/core/java/com/android/server/am/ActivityManagerService.java
mAnrManager.writeEvent(AnrManager.EVENT_BOOT_COMPLETED);
+ Intent startIntent = new Intent();
+ startIntent = mContext.getPackageManager().getLaunchIntentForPackage("uAppPackageName");
+ ifstartIntent != null){
+ mContext.startActivity(startIntent);
+ } else {
+ android.util.Log.i("jc", "getLaunchIntentForPackage failed" );
+ }
重新编译验证,修改生效,预置应用已设置为开机自启动