• Android11.0禁止安装apk功能


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

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

    1. diff --git a/packages/PackageInstaller/src/com/android/packageinstaller/InstallStart.java b/packages/PackageInstaller/src/com/android/packageinstaller/InstallStart.java
    2. old mode 100644
    3. new mode 100755
    4. index 0b8de6c..e45cb56
    5. --- a/packages/PackageInstaller/src/com/android/packageinstaller/InstallStart.java
    6. +++ b/packages/PackageInstaller/src/com/android/packageinstaller/InstallStart.java
    7. @@ -38,6 +38,8 @@ import android.os.RemoteException;
    8. import android.os.UserManager;
    9. import android.permission.IPermissionManager;
    10. import android.util.Log;
    11. +import android.widget.Toast;
    12. +
    13. import java.util.List;
    14. @@ -53,6 +55,7 @@ public class InstallStart extends Activity {
    15. private IPermissionManager mIPermissionManager;
    16. private UserManager mUserManager;
    17. private boolean mAbortInstall = false;
    18. + private boolean APK_INSTALL_FINISH = false;
    19. @Override
    20. protected void onCreate(@Nullable Bundle savedInstanceState) {
    21. @@ -150,7 +153,16 @@ public class InstallStart extends Activity {
    22. }
    23. if (nextActivity != null) {
    24. - startActivity(nextActivity);
    25. + if(!APK_INSTALL_FINISH) {
    26. + //startActivity(nextActivity);
    27. + Toast.makeText(InstallStart.this, "禁止安装", Toast.LENGTH_LONG).show();
    28. + Intent result = new Intent();
    29. + result.putExtra(Intent.EXTRA_INSTALL_RESULT,
    30. + PackageManager.INSTALL_FAILED_INVALID_URI);
    31. + setResult(RESULT_FIRST_USER, result);
    32. + } else{
    33. + startActivity(nextActivity);
    34. + }
    35. }
    36. finish();
    37. }

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

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

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

  • 相关阅读:
    vue中不同情况下的通讯方式
    快速排序(算法与数据结构)
    UE4/5 批量进行贴图Texture压缩、修改饱和度
    java项目-第122期ssm校园快递物流管理系统-计算机毕业设计项目
    教培机构如何抢占招生市场
    SAP OData 开发教程 - 从入门到提高(包含 SEGW, RAP 和 CDP)
    flutter系列之:flutter中常用的GridView layout详解
    编译“零汇编(Zero-Assembler)“的OpenJDK11
    java指令重排序
    Docker部署微服务项目
  • 原文地址:https://blog.csdn.net/wzh048503/article/details/128158933