Android Mediatek 添加 APK 安装和下载开关

简介: Android Mediatek 添加 APK 安装和下载开关

这个修改是客制化的需求 没啥可说 需要的可以参考思路。

这个 修改主要在 Android 系统中添加了两个开关,一个用于控制 APK 的安装,另一个用于控制 APK 的下载。

修改的文件:

  1. frameworks/base/services/core/java/com/android/server/pm/PackageManagerService.java
  2. packages/providers/DownloadProvider/src/com/android/providers/downloads/DownloadProvider.java

文件修改说明:

  1. PackageManagerService.java: 在 createDataDirsLI 方法中,添加了一个开关 APK_install_finish_switch。当此开关为 true 时,如果系统 APK 安装完成 (APK_install_finish 为 true),则禁止安装任何 APK。
  2. DownloadProvider.java: 在 insert 方法中,添加了一个开关 DISABLE_DOWNLOAD_SWITCH。当此开关为 true 时,禁止下载任何 APK 文件。
---
 .../com/android/server/pm/PackageManagerService.java | 12 ++++++++----
 .../providers/downloads/DownloadProvider.java        | 20 ++++++++++----------
 2 files changed, 18 insertions(+), 14 deletions(-)
 
diff --git a/frameworks/base/services/core/java/com/android/server/pm/PackageManagerService.java b/frameworks/base/services/core/java/com/android/server/pm/PackageManagerService.java
index dfbb040..48fd384 100755
--- a/frameworks/base/services/core/java/com/android/server/pm/PackageManagerService.java
+++ b/frameworks/base/services/core/java/com/android/server/pm/PackageManagerService.java
@@ -256,6 +256,8 @@ public class PackageManagerService extends IPackageManager.Stub {
     private static boolean DEBUG_PERMISSION = false;
  //shh add
     private static boolean APK_install_finish = false;
+ //apk disable install switch  
+ private static boolean APK_install_finish_switch= false;
     private static final int RADIO_UID = Process.PHONE_UID;
     private static final int LOG_UID = Process.LOG_UID;
     private static final int NFC_UID = Process.NFC_UID;
@@ -5443,10 +5445,12 @@ public class PackageManagerService extends IPackageManager.Stub {
     private int createDataDirsLI(String packageName, int uid, String seinfo) {
         int[] users = sUserManager.getUserIds();
     //如果系统APK安装完成,则禁止安装任何APK
-        if(APK_install_finish)
-        {
-            return PackageManager.INSTALL_FAILED_INVALID_APK;
-        }
+   if(APK_install_finish_switch){
+         if(APK_install_finish)
+         {
+             return PackageManager.INSTALL_FAILED_INVALID_APK;
+         }
+   } 
         int res = mInstaller.install(packageName, uid, uid, seinfo);
         if (res < 0) {
             return res;
diff --git a/packages/providers/DownloadProvider/src/com/android/providers/downloads/DownloadProvider.java b/packages/providers/DownloadProvider/src/com/android/providers/downloads/DownloadProvider.java
index 098961c..21dcd32 100755
--- a/packages/providers/DownloadProvider/src/com/android/providers/downloads/DownloadProvider.java
+++ b/packages/providers/DownloadProvider/src/com/android/providers/downloads/DownloadProvider.java
@@ -578,7 +578,7 @@ public final class DownloadProvider extends ContentProvider {
             }
         }
     }
-
+ private static boolean DISABLE_DOWNLOAD_SWITCH = false;
     /**
      * Inserts a row in the database
      */
@@ -593,15 +593,15 @@ public final class DownloadProvider extends ContentProvider {
             Log.d(Constants.TAG, "calling insert on an unknown/invalid URI: " + uri);
             throw new IllegalArgumentException("Unknown/Invalid URI " + uri);
         }
-
-   String mimeType = values.getAsString(Downloads.Impl.COLUMN_MIME_TYPE);
-        for (String str: APK_MIMETYPE){
-            if(mimeType.equals(str)){
-                Log.d(Constants.TAG, "do not download apk MIMETYPE "+ str);
-                return null;
-            }
-        }
-   
+   if(DISABLE_DOWNLOAD_SWITCH){
+     String mimeType = values.getAsString(Downloads.Impl.COLUMN_MIME_TYPE);
+         for (String str: APK_MIMETYPE){
+             if(mimeType.equals(str)){
+                 Log.d(Constants.TAG, "do not download apk MIMETYPE "+ str);
+                 return null;
+             }
+         }
+   }
    
         // copy some of the input values as it
         ContentValues filteredValues = new ContentValues();
-- 


相关文章
|
3月前
|
Ubuntu 开发工具 Android开发
Repo下载AOSP源码:基于ubuntu22.04 环境配置,android-12.0.0_r32
本文介绍了在基于Ubuntu 22.04的环境下配置Python 3.9、安装repo工具、下载和同步AOSP源码包以及处理repo同步错误的详细步骤。
212 0
Repo下载AOSP源码:基于ubuntu22.04 环境配置,android-12.0.0_r32
|
17天前
|
Java 程序员 开发工具
Android|修复阿里云播放器下载不回调的问题
虽然 GC 带来了很多便利,但在实际编码时,我们也需要注意对象的生命周期管理,该存活的存活,该释放的释放,避免因为 GC 导致的问题。
26 2
|
3月前
|
开发工具 uml git
AOSP源码下载方法,解决repo sync错误:android-13.0.0_r82
本文分享了下载AOSP源码的方法,包括如何使用repo工具和处理常见的repo sync错误,以及配置Python环境以确保顺利同步特定版本的AOSP代码。
399 0
AOSP源码下载方法,解决repo sync错误:android-13.0.0_r82
|
3月前
|
Java Android开发 Windows
使用keytool查看Android APK签名
本文介绍了如何使用Windows命令行工具和keytool查看APK的签名信息,并提供了使用AOSP环境中的signapk.jar工具对APK进行系统签名的方法。
326 0
使用keytool查看Android APK签名
|
3月前
|
API 开发工具 Android开发
Android源码下载
Android源码下载
438 0
|
3月前
|
Android开发
将AAB(Android App Bundle)转换为APK
将AAB(Android App Bundle)转换为APK
235 1
|
3月前
|
Android开发 开发者
Android、Flutter为不同的CPU架构包打包APK(v7a、v8a、x86)
Android、Flutter为不同的CPU架构包打包APK(v7a、v8a、x86)
237 1
|
3月前
|
存储 监控 数据库
Android经典实战之OkDownload的文件分段下载及合成原理
本文介绍了 OkDownload,一个高效的 Android 下载引擎,支持多线程下载、断点续传等功能。文章详细描述了文件分段下载及合成原理,包括任务创建、断点续传、并行下载等步骤,并展示了如何通过多种机制保证下载的稳定性和完整性。
98 0
|
3月前
|
Ubuntu 开发工具 Android开发
Repo下载、编译AOSP源码:基于Ubuntu 21.04,android-12.1.0_r27
文章记录了作者在Ubuntu 21.04服务器上配置环境、下载并编译基于Android 12.1.0_r27版本的AOSP源码的过程,包括解决编译过程中遇到的问题和错误处理方法。
175 0