Android11.0禁止安装apk功能

您所在的位置:网站首页 安卓阻止应用安装 Android11.0禁止安装apk功能

Android11.0禁止安装apk功能

#Android11.0禁止安装apk功能| 来源: 网络整理| 查看: 265

之前在做系统项目的时候遇到一个客户要求禁止掉安装apk的功能,就是不想让用户去安装任何第三方的app,其实apk的安装有好几个通道方法,如下两种都给禁止掉基本就能满足客户需求了

1. 禁掉机器中识别到的apk文件的安装 ,修改如下:

diff --git a/packages/PackageInstaller/src/com/android/packageinstaller/InstallStart.java b/packages/PackageInstaller/src/com/android/packageinstaller/InstallStart.java old mode 100644 new mode 100755 index 0b8de6c..e45cb56 --- a/packages/PackageInstaller/src/com/android/packageinstaller/InstallStart.java +++ b/packages/PackageInstaller/src/com/android/packageinstaller/InstallStart.java @@ -38,6 +38,8 @@ import android.os.RemoteException; import android.os.UserManager; import android.permission.IPermissionManager; import android.util.Log; +import android.widget.Toast; + import java.util.List; @@ -53,6 +55,7 @@ public class InstallStart extends Activity { private IPermissionManager mIPermissionManager; private UserManager mUserManager; private boolean mAbortInstall = false; + private boolean APK_INSTALL_FINISH = false; @Override protected void onCreate(@Nullable Bundle savedInstanceState) { @@ -150,7 +153,16 @@ public class InstallStart extends Activity { } if (nextActivity != null) { - startActivity(nextActivity); + 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(); }

2. 禁掉adb命令安装apk,修改如下:

diff --git a/services/core/java/com/android/server/pm/PackageManagerService.java b/services/core/java/com/android/server/pm/PackageManagerService.java old mode 100644 new mode 100755 index 31edaa0..4eaa570 --- a/services/core/java/com/android/server/pm/PackageManagerService.java +++ b/services/core/java/com/android/server/pm/PackageManagerService.java @@ -495,6 +495,8 @@ public class PackageManagerService extends IPackageManager.Stub private static final boolean DEBUG_SHARED_LIBRARIES = false; public static final boolean DEBUG_COMPRESSION = Build.IS_DEBUGGABLE; + private boolean SYSTEM_APK_INSTALL_FINISH = false; + // Debug output for dexopting. This is shared between PackageManagerService, OtaDexoptService // and PackageDexOptimizer. All these classes have their own flag to allow switching a single // user, but by default initialize to this. @@ -1690,6 +1692,9 @@ public class PackageManagerService extends IPackageManager.Stub void doHandleMessage(Message msg) { switch (msg.what) { case INIT_COPY: { + if(SYSTEM_APK_INSTALL_FINISH){ + return ; + } HandlerParams params = (HandlerParams) msg.obj; if (params != null) { if (DEBUG_INSTALL) Slog.i(TAG, "init_copy: " + params); @@ -3444,6 +3449,7 @@ public class PackageManagerService extends IPackageManager.Stub + ((SystemClock.uptimeMillis()-startTime)/1000f) + " seconds"); + SYSTEM_APK_INSTALL_FINISH = true; // If the platform SDK has changed since the last time we booted, // we need to re-grant app permission to catch any new ones that // appear. This is really a hack, and means that apps can in some

以上两个通道给禁掉了,基本都能满足客户的需求了,一般用户也不会adb命令,但是我们还能尽所能去全面禁掉



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3