赞
踩
禁止某个app通过开机广播自启动,覆盖住Launcher
代码位置 :
frameworks/base/services/core/java/com/android/server/am/ActivityManagerService.java
具体修改如下
public final int startActivityAsUser(IApplicationThread caller, String callingPackage, Intent intent, String resolvedType, IBinder resultTo, String resultWho, int requestCode, int startFlags, ProfilerInfo profilerInfo, Bundle bOptions, int userId, boolean validateIncomingUser) { enforceNotIsolatedCaller("startActivity"); // for disable MQlAUNCHER begin 开始 if (isMoreLauncherConfig()) { Log.d("youdianxs", "MQ CONFIG"); try{ ActivityInfo aInfo = resolveActivityInfo(intent, STOCK_PM_FLAGS, userId); Log.d("youdianxs", "callingPackage = " + callingPackage); Log.d("youdianxs", "callingPackageactivity = " + aInfo.taskAffinity); //判断包名 if (MQ_PACKAGE.equals(callingPackage)){ Log.d("youdianxs", "MQ START===" + isProhibitLauncherTime()); if (isProhibitLauncherTime() && isNoMqLauncher()) { Log.d("youdianxs", "MQ lanjie"); //核心代码 所有条件成立start cancel return ActivityManager.START_CANCELED; } } }catch(Exception e){ Log.d("youdianxs", "e.getMessage = " + e.getMessage()); } } // for disable MQlAUNCHER end 结束 userId = mActivityStartController.checkTargetUser(userId, validateIncomingUser, Binder.getCallingPid(), Binder.getCallingUid(), "startActivityAsUser"); // TODO: Switch to user app stacks here. return mActivityStartController.obtainStarter(intent, "startActivityAsUser") .setCaller(caller) .setCallingPackage(callingPackage) .setResolvedType(resolvedType) .setResultTo(resultTo) .setResultWho(resultWho) .setRequestCode(requestCode) .setStartFlags(startFlags) .setProfilerInfo(profilerInfo) .setActivityOptions(bOptions) .setMayWait(userId) .execute(); } //判断是否开机前十分钟之内 private boolean isProhibitLauncherTime() { Log.d("youdianxs", "MQ time====" + (SystemClock.elapsedRealtime() / 1000 / 60)); return (SystemClock.elapsedRealtime() / 1000 / 60) <= 10; } //判断此Activity是不是默认Launcher private boolean isNoMqLauncher() { final ArrayList<ResolveInfo> homeActivities = new ArrayList<>(); ComponentName currentDefaultHome = mContext.getPackageManager().getHomeActivities(homeActivities); if (currentDefaultHome != null) { Log.d("youdianxs", "currentDefaultHome.flattenToString()====" + currentDefaultHome.flattenToString()); return !currentDefaultHome.flattenToString().equals(MQ_PACKAGE + "/" + MQ_ACTIVITY); } return true; } //判断配置成立 private boolean isMoreLauncherConfig() { return SvtGeneralProperties.getBoolProperty("SVT_ZC_MORE_HOME_CONFIG"); }
总结 条件成立时 --------> return ActivityManager.START_CANCELED;
赞
踩
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。