一键隐藏kodi 一键隐藏app amlogic rockchip tvbox

版权声明:本文为博主原创文章,未经博主允许不得转载。http://blog.csdn.net/capeng https://blog.csdn.net/capeng/article/details/72644944

   怎么隐藏一个app的显示呢?方法十多种多样的。


1  、PackageManager.getComponentEnabledSettingge 跟setComponentEnabledSetting 这两个办法是可行的。当然有他的优缺点,可以试试


2、直接注释掉mainfest里面的入口category android:name="”android.intent.category.LAUNCHER”"></category> ,这个是Android提供的一个隐式启动app的方法



3、上面的方法都是直接利用改了Android 现有的api去改的。

其实有更加灵活的修改的方法。那就是直接去修改packagemanagerservice


扫描二维码关注公众号,回复: 5537054 查看本文章
 public ParceledListSlice<PackageInfo> getInstalledPackages(int flags, int userId) {//vincent
    
        final boolean listUninstalled = (flags & PackageManager.GET_UNINSTALLED_PACKAGES) != 0;

        enforceCrossUserPermission(Binder.getCallingUid(), userId, true, false, "get installed packages");

        // writer
        synchronized (mPackages) {
            ArrayList<PackageInfo> list;
            if (listUninstalled) {
                list = new ArrayList<PackageInfo>(mSettings.mPackages.size());
                for (PackageSetting ps : mSettings.mPackages.values()) {
                    PackageInfo pi;
                    if (ps.pkg != null) {
                        pi = generatePackageInfo(ps.pkg, flags, userId);
                    } else {
                        pi = generatePackageInfoFromSettingsLPw(ps.name, flags, userId);
                    }
                    if (pi != null) {
                 
                    	if(标志位){
                        list.add(pi);
                      }
                    }
                }
            } else {
                list = new ArrayList<PackageInfo>(mPackages.size());
                for (PackageParser.Package p : mPackages.values()) {
                    PackageInfo pi = generatePackageInfo(p, flags, userId);
                    if (pi != null) {
                    	
                    if(标志位){
                    	
                        list.add(pi);
                        	}
                    }
                }
            }
还有另外一个地方:

    @Override
    public ParceledListSlice<ApplicationInfo> getInstalledApplications(int flags, int userId) {//vincent
        if (!sUserManager.exists(userId)) return null;
        final boolean listUninstalled = (flags & PackageManager.GET_UNINSTALLED_PACKAGES) != 0;

        // writer
        synchronized (mPackages) {
            ArrayList<ApplicationInfo> list;
            if (listUninstalled) {
                list = new ArrayList<ApplicationInfo>(mSettings.mPackages.size());
                for (PackageSetting ps : mSettings.mPackages.values()) {
                    ApplicationInfo ai;
                    if (ps.pkg != null) {
                        ai = PackageParser.generateApplicationInfo(ps.pkg, flags,
                                ps.readUserState(userId), userId);
                    } else {
                        ai = generateApplicationInfoFromSettingsLPw(ps.name, flags, userId);
                    }
                    if (ai != null) {
                    	
                    	if(标志位){
                      list.add(ai);
                      }
                    }
                }
            } else {
                list = new ArrayList<ApplicationInfo>(mPackages.size());
                for (PackageParser.Package p : mPackages.values()) {
                    if (p.mExtras != null) {
                        ApplicationInfo ai = PackageParser.generateApplicationInfo(p, flags,
                                ((PackageSetting)p.mExtras).readUserState(userId), userId);
                        if (ai != null) {
                        	
                          list.add(ai);
                          }
                        }
                    }
                }
            }

            return new ParceledListSlice<ApplicationInfo>(list);
        }
    }

需要隐藏那个app,又或者需要做其他什么操作,都可以在代码块的标志位里面进行修改。


当然。所有通过这两个api获取的地方,app都会被隐藏掉。如果还想做深入的隐藏。例如data/app ,就需要对整个文件系统进行屏蔽,对busybox  脚本命令进行过滤

。来来回回,其实套路都是那么个样。。。。。。。你懂的。



猜你喜欢

转载自blog.csdn.net/capeng/article/details/72644944