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



实现根据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){
+   
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值