仿茄子快传——获取安装应用列表信息

来源:互联网 发布:centos rpm snmp 编辑:程序博客网 时间:2024/04/27 15:31

     以前在使用茄子的快传的时候,我们发现有一个功能是能发送安装了的apk文件,就觉得还挺有意思的,后来发现无非就是调用系统的API的,发现了之后也就觉得没有什么意思了,感觉不好玩了。不过后面我将会深入的了解这些api背后所做的一些事情的。

  • 首先我们需要拿到PackageManager,也就是我们所说的包管理器
    PackageManager packageManager = getPackageManager();    //这里有一个参数为0 ,是获取所有安装的应用,包括系统应用,第三方的应用    List<PackageInfo> packageInfos = packageManager.getInstalledPackages(0);    List<AppInfo> list = new ArrayList<>();    AppInfo appInfo;    PackageInfo packageInfo;    for(int index = 0; index < packageInfos.size(); index++) {        appInfo = new AppInfo();        packageInfo = packageInfos.get(index);        //获取安装应用的包名        appInfo.setPackageName(packageInfo.packageName);        appInfo.setFilePath(packageInfo.applicationInfo.sourceDir);        if(!TextUtils.isEmpty(appInfo.getFilePath())) {            File apkFile = new File(appInfo.getFilePath());            appInfo.setAppSize(Formatter.formatShortFileSize(mActivity, apkFile.length()));        }        //获取应用的名称        appInfo.setAppName(packageInfo.applicationInfo.loadLabel(packageManager).toString());        //获取应用的图标,这里的图标的格式Drawable的        appInfo.setAppIcon(packageInfo.applicationInfo.loadIcon(packageManager));        list.add(appInfo);    }    Collections.sort(list, new Comparator<AppInfo>() {        @Override        public int compare(AppInfo lhsAppInfo, AppInfo rhsAppInfo) {            String lhsName = lhsAppInfo.getAppName();            String rhsName = rhsAppInfo.getAppName();            return lhsName.compareTo(rhsName);        }    });

      在上面我们可以看到一个挺有意思的东西,就是 packageInfo.applicationInfo.sourceDir,其实这个属性主要是用来获取应用的 apk 文件的,我们知道每个应用程序安装完成之后,都还会保存着一个应用安装包在手机中的,系统应用的 apk 文件存放在 /system/app 目录下的,那我们的自己安装的应用则会放在 /data/app/ 目录下的,有些可能不相信的,我们可以通过 debug 的方式来调试一下程序来看看具体怎么做的。

这里写图片描述

     茄子快传其实也这样子做的很简单的,都是调用系统的api 来获取安装应用的信息,同时还可以获取到应用的apk文件。其实这是一个最基本的获取安装应用的信息,其实我们还可以获取应用的所申请的权限,然后注册的广播,然后注册的 服务、然后 Launch Activity等等一系列的东西。我们在接下来的时候的时候,就会仿照一下360手机卫视获取安装应用的一些信息等等。由于获取这些信息还是挺耗时的,我们因此建议将这个放到子线程里面去操作的。接下来的时候就非常简单的,我这里也不往下写了。

0 0
原创粉丝点击