禁止手动安装非白名单APP(APK),白名单的包名,请替换成自己的包名。在PackageInstallerActivity.java添加修改:
diff --git a/device/rockchip/rk356x/rk3568_t/rk3568_t.mk b/device/rockchip/rk356x/rk3568_t/rk3568_t.mk
index 75ab561814..14682f5422 100755
--- a/device/rockchip/rk356x/rk3568_t/rk3568_t.mk
+++ b/device/rockchip/rk356x/rk3568_t/rk3568_t.mk
@@ -51,4 +51,5 @@ PRODUCT_PROPERTY_OVERRIDES += \
persist.sys.timezone=Asia/Shanghai \
persist.sys.statusbar.enable=true \
persist.sys.navigationbar.enable=true \
+ persist.sys.PackageInstaller.enable=false \
persist.vendor.orientation = 180
diff --git a/frameworks/base/packages/PackageInstaller/src/com/android/packageinstaller/PackageInstallerActivity.java b/frameworks/base/packages/PackageInstaller/src/com/android/packageinstaller/PackageInstallerActivity.java
index d4ca4a39bd..3ae036b103 100644
--- a/frameworks/base/packages/PackageInstaller/src/com/android/packageinstaller/PackageInstallerActivity.java
+++ b/frameworks/base/packages/PackageInstaller/src/com/android/packageinstaller/PackageInstallerActivity.java
@@ -285,7 +285,7 @@ public class PackageInstallerActivity extends AlertActivity {
mAppInfo = null;
}
- if (pkgName.contains("com.tao") || pkgName.equals("com.example.tao") || SystemProperties.getBoolean("persist.sys.statusbar.enable", false)) {
+ if (pkgName.contains("com.tao") || pkgName.equals("com.example.tao") || SystemProperties.getBoolean("persist.sys.PackageInstaller.enable", false)) {
startInstallConfirm();
}
}
diff --git a/frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/phone/CentralSurfacesImpl.java b/frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/phone/CentralSurfacesImpl.java
index bfa816bc75..b732bc932f 100644
--- a/frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/phone/CentralSurfacesImpl.java
+++ b/frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/phone/CentralSurfacesImpl.java
@@ -280,6 +280,8 @@ public class CentralSurfacesImpl extends CoreStartable implements
"persist.sys.statusbar.enable";
private static final String ACTION_SCREEN_SLEEP =
"com.systemui.screen_sleep";
+ private static final String ACTION_PACKAGE_INSTALLER =
+ "com.systemui.PackageInstaller";
private static final String BANNER_ACTION_CANCEL =
"com.android.systemui.statusbar.banner_action_cancel";
private static final String BANNER_ACTION_SETUP =
@@ -943,6 +945,7 @@ public class CentralSurfacesImpl extends CoreStartable implements
if (SystemProperties.getBoolean(SYS_PROPERTY_STATUS_BAR, false)) {
mStatusBarWindowController.setBarVisibility(View.GONE);
}
+ SystemProperties.set("persist.sys.PackageInstaller.enable", "false");
if (mWallpaperSupported) {
// Make sure we always have the most current wallpaper info.
@@ -1431,6 +1434,7 @@ public class CentralSurfacesImpl extends CoreStartable implements
filter.addAction(ACTION_NAVIGATION_BAR);
filter.addAction(ACTION_STATUS_BAR);
filter.addAction(ACTION_SCREEN_SLEEP);
+ filter.addAction(ACTION_PACKAGE_INSTALLER);
mBroadcastDispatcher.registerReceiver(mBroadcastReceiver, filter, null, UserHandle.ALL);
}
@@ -2707,7 +2711,7 @@ public class CentralSurfacesImpl extends CoreStartable implements
if (SystemProperties.getBoolean(SYS_PROPERTY_STATUS_BAR, true) == enable) {
return; //过滤掉重复的广播控制
}
-
+
SystemProperties.set(SYS_PROPERTY_STATUS_BAR, String.valueOf(enable));
if(enable){
mStatusBarWindowController.setBarVisibility(View.GONE);
@@ -2727,6 +2731,12 @@ public class CentralSurfacesImpl extends CoreStartable implements
SystemClock.uptimeMillis(), PowerManager.WAKE_REASON_GESTURE, "com.android.systemui:BOUNCER_VISIBLE");
Settings.System.putInt(mContext.getContentResolver(),android.provider.Settings.System.SCREEN_OFF_TIMEOUT,0x7fffffff);
}
+ } else if(ACTION_PACKAGE_INSTALLER.equals(action)){ //app限制
安装
+ boolean enable = intent.getBooleanExtra("enable", true);
+ if (SystemProperties.getBoolean("persist.sys.PackageInstaller.enable", true) == enable) {
+ return; //过滤掉重复的广播控制
+ }
+ SystemProperties.set("persist.sys.PackageInstaller.enable", String.valueOf(enable));
}
Trace.endSection();
}
手动控制禁止/允许ADB安装APK(APP),在PackageManagerShellCommand.java添加修改:
diff --git a/frameworks/base/services/core/java/com/android/server/pm/PackageManagerShellCommand.java b/frameworks/base/services/core/java/com/android/server/pm/PackageManagerShellCommand.java
index d632596da2..8f522d2d5b 100644
--- a/frameworks/base/services/core/java/com/android/server/pm/PackageManagerShellCommand.java
+++ b/frameworks/base/services/core/java/com/android/server/pm/PackageManagerShellCommand.java
@@ -219,6 +219,10 @@ class PackageManagerShellCommand extends ShellCommand {
return runQueryIntentReceivers();
case "install":
- // return runInstall();
+ if (SystemProperties.getBoolean("persist.sys.PackageInstaller.enable", false)) {
+ return runInstall();
+ }else{
+ pw.println("Error: Third-party apps are not allowed to be installed.");
+ return -1;
+ }
case "install-streaming":
return runStreamingInstall();
case "install-incremental":