一、禁止手动安装(下载的apk文件)
framwork/base/packages/PackageInstaller/src/com/android/packageinstaller/InstallStart.java
@@ -37,7 +37,7 @@ import android.os.UserManager;
import android.util.Log;
import java.util.Arrays;
-
+import android.widget.Toast;
/**
* Select which activity is the first visible activity of the installation and forward the intent to
* it.
**/
@@ -50,6 +50,8 @@ public class InstallStart extends Activity {
private UserManager mUserManager;
private boolean mAbortInstall = false;
+ private boolean APK_INSTALL_FINISH = false;
+
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
@@ -140,7 +142,18 @@ public class InstallStart extends Activity {
}
if (nextActivity != null) {
- startActivity(nextActivity);
+ //add ban apk install begin {//@
+ if(!APK_INSTALL_FINISH) {
+ //startActivity(nextActivity);
+ Toast.makeText(InstallStart.this, "禁止安装", Toast.LENGTH_LONG).show();
+ Intent result = new Intent();
+ result.putExtra(Intent.EXTRA_INSTALL_RESULT,
+ PackageManager.INSTALL_FAILED_INVALID_URI);
+ setResult(RESULT_FIRST_USER, result);
+ } else{
+ startActivity(nextActivity);
+ }
+ //@}
}
finish();
}
二、禁止adb指令安装
diff --git a/services/core/java/com/android/server/pm/PackageManagerService.java
@@ -546,6 +546,7 @@ public class PackageManagerService extends IPackageManager.Stub
public static final boolean TRACE_SNAPSHOTS = false;
private static final boolean DEBUG_PER_UID_READ_TIMEOUTS = false;
+ private boolean SYSTEM_APK_INSTALL_FINISH = false; // Prohibit the installation of third-party APK
//Not report ART metrics to statsd after first flash boot
public static boolean DEBUG_ART_STATSLOG = SystemProperties.getBoolean(
"persist.sys.pm.art.statslog", false);
@@ -5824,6 +5825,10 @@ public class PackageManagerService extends IPackageManager.Stub
void doHandleMessage(Message msg) {
switch (msg.what) {
case INIT_COPY: {
+ //add Prohibit the installation of third-party APK(adb)
+ if(SYSTEM_APK_INSTALL_FINISH){
+ return;
+ }
HandlerParams params = (HandlerParams) msg.obj;
if (params != null) {
if (DEBUG_INSTALL) Slog.i(TAG, "init_copy: " + params);
@@ -7729,7 +7734,7 @@ public class PackageManagerService extends IPackageManager.Stub
Slog.i(TAG, "Time to scan packages: "
+ ((SystemClock.uptimeMillis()-startTime)/1000f)
+ " seconds");
-
+ SYSTEM_APK_INSTALL_FINISH = true;
mPermissionManager.readLegacyPermissionStateTEMP();
// If the build fingerprint has changed since the last time we booted,
// we need to re-grant app permission to catch any new ones that
三、AD13版本---禁止adb安装apk
+++ b/services/core/java/com/android/server/pm/PackageManagerShellCommand.java
@@ -1405,6 +1405,11 @@ class PackageManagerShellCommand extends ShellCommand {
}
private int runInstall() throws RemoteException {
+ if(true){
+ final PrintWriter pw1 = getOutPrintWriter();
+ pw1.println("Error: unknown apk");
+ return 1;
+ }
return doRunInstall(makeInstallParams(UNSUPPORTED_INSTALL_CMD_OPTS));
}