繁体   English   中英

未安装的应用程序列表查询返回已安装的应用程序列表,包括PackageManager

[英]List of un-installed apps query returning list of installed apps form PackageManager

我正在尝试使用Pacakge管理器从设备中获取已卸载应用程序的列表。 但是,代码返回所有已安装应用程序的列表。

// get a list of all installed apps
        List<ApplicationInfo> packages = pm.getInstalledApplications(PackageManager.GET_UNINSTALLED_PACKAGES);



        for(ApplicationInfo unisntalledPackage : packages){


            // itearte hough apps vi acativity manager and get details

            PackageInfo pkginfo=null;
            try {
                pkginfo = pm.getPackageInfo(unisntalledPackage.processName,
                        PackageManager.GET_UNINSTALLED_PACKAGES);
            } catch (NameNotFoundException e1) {
                // TODO Auto-generated catch block
                e1.printStackTrace();
            }

            if (pkginfo !=null && !isSystemPackage(pkginfo)) {

            try{ .....//get info form package object

任何输入赞赏。

使用GET_UNINSTALLED_PACKAGES返回“有关具有数据目录的所有应用程序(甚至是未安装的应用程序)的信息。” 因此,代码正在完成预期的工作 - 您获得所有已安装的软件包, 此外还有任何已卸载的软件包,但用户选择保留数据。

要获得已卸载的软件包,您必须遍历列表,只选择已卸载的软件包。

@Zmarties感谢您的投入。

通过迭代包List并使用TRUE FLAG_IS_DATA_ONLY捕获ApplicationInfo对象,该对象没有返回16777216的整数(这是返回的常量,如果为true)我们可以捕获已卸载的应用程序;

if(unisntalledPackage.FLAG_IS_DATA_ONLY !=16777216 ){

// then app is unisntalled 

但是无法确定是否未捕获任何已卸载的应用程序,我的测试设备上仍有数据。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM