PMS管理APP安装到data和禁止卸载列表

本文介绍如何将PMS管理APP安装到Android系统的data分区,并通过XML配置防止应用程序被卸载。详细流程涉及包名筛选及安装过程。
摘要由CSDN通过智能技术生成



实现根据xml的packagename防止卸载,筛选安装

DataPreInstall文件夹放到 vendor\tcl\sita\tvkit\uikit\frameworks\android\java\com\tcl\os\system\下
PackageManagerService.java按patch修改即可实现基本防止卸载和筛选安装功能

基本流程图

patch

+++ core/java/com/android/server/pm/PackageManagerService.java  (working copy)
@@ -308,6 +308,7 @@
 
 //Added by chyj@tcl for AppBlacklist 20170516
 import com.tcl.os.system.packageverify.PackageVerify;
+import com.tcl.os.system.DataPreInstallApp.DataPreInstallApp;
 //End of TCL package install strategy
 
 
@@ -346,20 +347,20 @@
  */
 public class PackageManagerService extends IPackageManager.Stub {

 
     // Debug output for dexopting. This is shared between PackageManagerService, OtaDexoptService
     // and PackageDexOptimizer. All these classes have their own flag to allow switching a single
@@ -406,7 +407,7 @@
     static final int SCAN_CHECK_ONLY = 1<<15;
     static final int SCAN_DONT_KILL_APP = 1<<17;
     static final int SCAN_IGNORE_FROZEN = 1<<18;
-
+       private   boolean SCAN_DATA_APP = false;  //add by chyj
     static final int REMOVE_CHATTY = 1<<16;
 
     private static final int[] EMPTY_INT_ARRAY = new int[0];
@@ -548,6 +549,7 @@
 
        //Added by chyj @tcl for AppBlacklist 20170516
        PackageVerify mPackageVerify;
+       DataPreInstallApp mDataPreInstallApp;
        //End of TCL package install strategy
 
 
@@ -2129,6 +2131,7 @@
         mProtectedPackages = new ProtectedPackages(mContext);
                //Added by chyj@tcl for AppBlacklist 20170516
         mPackageVerify = null;//new PackageVerify();  tmp delete 
+        mDataPreInstallApp = new DataPreInstallApp();
                //End of TCL package install strategy
         synchronized (mInstallLock) {
         // writer
@@ -2415,8 +2418,9 @@
             if (!mOnlyCore) {
                 EventLog.writeEvent(EventLogTags.BOOT_PROGRESS_PMS_DATA_SCAN_START,
                         SystemClock.uptimeMillis());
+                               SCAN_DATA_APP = true;
                 scanDirTracedLI(mAppInstallDir, 0, scanFlags | SCAN_REQUIRE_KNOWN, 0);
-
+                               SCAN_DATA_APP = false;
                 scanDirTracedLI(mDrmAppPrivateInstallDir, mDefParseFlags
                         | PackageParser.PARSE_FORWARD_LOCK,
                         scanFlags | SCAN_REQUIRE_KNOWN, 0);
@@ -6679,6 +6683,8 @@
                 // Ignore entries which are not packages
                 continue;
             }
+                       Slog.w(TAG, "chyj scanDirLI File to parse " + file );
+
             try {
                 scanPackageTracedLI(file, parseFlags | PackageParser.PARSE_MUST_BE_APK,
                         scanFlags, currentTime, null);
@@ -6819,7 +6825,22 @@
         } finally {
             Trace.traceEnd(TRACE_TAG_PACKAGE_MANAGER);
         }
-
+
+               if (DEBUG_INSTALL) Slog.d(TAG, "chyj scanPackageLI Parsing: scanFile=" + scanFile+" packagename="+pkg.packageName);
+               //add by chyj if is first start system and /data/app  will check is preinstall frome TCL 
+               if(SCAN_DATA_APP){
+   
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值