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();
-- 


相关文章
|
4月前
|
移动开发 前端开发 Android开发
【02】建立各项目录和页面标准化产品-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
【02】建立各项目录和页面标准化产品-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
479 12
【02】建立各项目录和页面标准化产品-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
|
4月前
|
移动开发 JavaScript 应用服务中间件
【06】优化完善落地页样式内容-精度优化-vue加vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
【06】优化完善落地页样式内容-精度优化-vue加vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
444 5
【06】优化完善落地页样式内容-精度优化-vue加vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
|
4月前
|
移动开发 Rust JavaScript
【01】首页建立-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
【01】首页建立-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
882 4
【01】首页建立-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
|
4月前
|
移动开发 Android开发
【03】建立隐私关于等相关页面和内容-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
【03】建立隐私关于等相关页面和内容-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
238 0
|
7月前
|
存储 Android开发 数据安全/隐私保护
Thanox安卓系统增加工具下载,管理、阻止、限制后台每个APP运行情况
Thanox是一款Android系统管理工具,专注于权限、后台启动及运行管理。支持应用冻结、系统优化、UI自定义和模块管理,基于Xposed框架开发,安全可靠且开源免费,兼容Android 6.0及以上版本。
820 4
|
7月前
|
存储 人工智能 文字识别
三款安卓手机word编辑器下载,Microsoft Word,wps office,Word手机版,手机word编辑查看阅读器,PDF转换器apk下载
WPS Office是一款功能强大的办公软件,支持文档编辑、表格处理和演示文稿制作,兼容多种格式并提供丰富的云服务。它具备低内存占用、快速运行的特点,支持跨设备同步与多人协作,内置海量模板及AI辅助功能,如智能写作和PPT自动生成。此外,还可扫描文件、编辑PDF并转换为其他格式,极大提升办公效率,适合手机用户便捷操作。
747 1
|
11月前
|
JavaScript Linux 网络安全
Termux安卓终端美化与开发实战:从下载到插件优化,小白也能玩转Linux
Termux是一款安卓平台上的开源终端模拟器,支持apt包管理、SSH连接及Python/Node.js/C++开发环境搭建,被誉为“手机上的Linux系统”。其特点包括零ROOT权限、跨平台开发和强大扩展性。本文详细介绍其安装准备、基础与高级环境配置、必备插件推荐、常见问题解决方法以及延伸学习资源,帮助用户充分利用Termux进行开发与学习。适用于Android 7+设备,原创内容转载请注明来源。
2987 77
|
7月前
|
API 开发工具 Android开发
qq虚拟视频插件下载安装手机版, 安卓虚拟视频插件,替换摄像头工具
Xposed入口模块:拦截目标应用的相机调用‌23 Camera1 API处理:通过PreviewCallback替换视频流‌1 Camera2 API适
|
11月前
|
安全 算法 小程序
【03】微信支付商户申请下户到配置完整流程-微信开放平台创建APP应用-填写上传基础资料-生成安卓证书-获取Apk签名-申请+配置完整流程-优雅草卓伊凡
【03】微信支付商户申请下户到配置完整流程-微信开放平台创建APP应用-填写上传基础资料-生成安卓证书-获取Apk签名-申请+配置完整流程-优雅草卓伊凡
745 28
【03】微信支付商户申请下户到配置完整流程-微信开放平台创建APP应用-填写上传基础资料-生成安卓证书-获取Apk签名-申请+配置完整流程-优雅草卓伊凡
|
11月前
|
监控 Shell Linux
Android调试终极指南:ADB安装+多设备连接+ANR日志抓取全流程解析,覆盖环境变量配置/多设备调试/ANR日志分析全流程,附Win/Mac/Linux三平台解决方案
ADB(Android Debug Bridge)是安卓开发中的重要工具,用于连接电脑与安卓设备,实现文件传输、应用管理、日志抓取等功能。本文介绍了 ADB 的基本概念、安装配置及常用命令。包括:1) 基本命令如 `adb version` 和 `adb devices`;2) 权限操作如 `adb root` 和 `adb shell`;3) APK 操作如安装、卸载应用;4) 文件传输如 `adb push` 和 `adb pull`;5) 日志记录如 `adb logcat`;6) 系统信息获取如屏幕截图和录屏。通过这些功能,用户可高效调试和管理安卓设备。