今天需要获得已安装应用程序的信息,过滤掉已系统自带的应用程序。我在网上看了看,有人说通过
if (p.versionName == null) {
continue;
}
可以过滤掉系统自带的应用程序,我尝试了一下,不行。
查看源码,InstalledAppDetails.java应用程序的详细资料的类(比如我们进入系统的应用程序列表中,点击某个应用程序后,就会显示一个关于这个应用程序的详细列表),在这个类中,可以看到这么这个函数setAppBtnState:这个函数的功能设定详细列表中的几个按钮的值信息。
在这个函数中看到
if ((mAppInfo.flags & ApplicationInfo.FLAG_SYSTEM) != 0) {
if ((mAppInfo.flags & ApplicationInfo.FLAG_UPDATED_SYSTEM_APP) != 0) {
mAppButtonState = AppButtonStates.FACTORY_RESET;
mAppButtonText = getText(R.string.app_factory_reset);
} else {
if ((mAppInfo.flags & ApplicationInfo.FLAG_ALLOW_CLEAR_USER_DATA) == 0) {
// Hide button if diableClearUserData is set
mAppButtonState = AppButtonStates.NONE;
visible = false;
} else {
mAppButtonState = AppButtonStates.CLEAR_DATA;
mAppButtonText = getText(R.string.clear_user_data_text);
}
}
} else {
mAppButtonState = AppButtonStates.UNINSTALL;
mAppButtonText = getText(R.string.uninstall_text);
}
上面标红的一句,if ((mAppInfo.flags & ApplicationInfo.FLAG_SYSTEM) != 0)就是用来判断应用程序是不是系统自带的。这样就可以通过这句来过滤掉系统自带的应用程序,例子如下
List<PackageInfo> packs = context.getPackageManager().getInstalledPackages(0);
int count = packs.size() - 1;
for (int i = 0; i <= count; i++) {
PackageInfo p = packs.get(i);
if (p.versionName == null) {
continue;
}
ApplicationInfo itemInfo = p.applicationInfo;
if ((itemInfo.flags & ApplicationInfo.FLAG_SYSTEM) != 0)
continue;
...............
}
http://www.iteye.com/topic/840411
分享到:
相关推荐
在深入探讨Android系统的高级应用开发时,理解并分析系统自带应用的源码是至关重要的一步。这里我们聚焦于Android 2.3.1版本中的联系人应用源码,它为我们揭示了Android平台处理联系人数据的核心机制以及UI设计的...
同时,对于想要深入研究Android系统内部机制的人来说,这是一个宝贵的资源,可以帮助他们了解系统级别的蓝牙服务如何与应用程序交互。 此外,源代码中的配置文件也非常重要,它们通常包含服务的定义、权限设置、...
"Android系统自带分享图片功能" Android系统自带分享图片功能是指Android系统中提供的一种图片分享功能,可以让用户快速...Android系统自带分享图片功能是一种非常实用的功能,对于需要分享图片的应用程序非常有价值。
内部存储通常用于应用程序的数据存储,而外部存储(SD卡)则用来存储用户文件和媒体内容。Android提供了`Environment`类来访问这些存储区域,如`getExternalStorageDirectory()`方法用于获取外部存储根目录。 二、...
1. **system.log**:这是Android系统的主要日志文件,包含了系统服务、应用程序和其他系统组件的常规输出。在启动过程中,你可以看到系统初始化的各个阶段,如硬件探测、内核启动、Zygote进程创建、System Server...
在Android系统管理中,了解如何全面地获取手机上应用程序(APP)的相关信息是至关重要的。这不仅涉及到系统自带的应用,还包括用户安装的第三方APP以及存储在SD卡上的应用。在这个过程中,我们通常会关注以下几个...
在Android系统中,信息过滤功能是一项重要的安全特性,它允许用户和系统对应用程序接收和发送的信息进行筛选,以防止恶意内容或不必要的干扰。这个压缩包文件"Android源码——信息过滤功能源码.zip"可能包含了实现这...
Android系统提供了内置的分享接口,使得开发者可以轻松地集成这一功能到自己的应用程序中。本文将深入探讨如何使用Android自带的分享接口来分享图片和文本。 首先,我们需要了解的是Android中的Intent系统。Intent...
在Android平台上开发一款字典应用程序是一项综合性的任务,涉及到多个技术层面和功能实现。下面将详细探讨这款"android字典程序"所涵盖的关键知识点。 首先,我们要了解Android应用开发的基础,这包括Java或Kotlin...
【注意】本工具只能删除 /data/data下的应用!即 预装的软件不能卸载!因为权限不足!...使用linux sh脚本 调用系统自带卸载 命令pm,并进行过滤,实现批量卸载!即 pm uninstall com.xxx.xx的 多次执行!
包名是Android系统区分不同应用程序的唯一标识,它通常用于应用管理、权限控制、调试等场景。以下是几种常见的获取Android应用程序包名的方法,每种方法都各具特点,适用于不同的操作环境和使用场景。 方法一:使用...
这个项目涵盖了Android应用程序开发的核心知识点,包括用户界面设计、数据存储、事件处理以及与其他系统服务的集成。 1. **用户界面设计**:在Android中,用户界面主要通过XML布局文件来定义。在这个通讯录应用中,...
**APK**(Android Package Kit)是以 `.apk` 作为扩展名的文件格式,用于在 Android 平台上分发和安装应用程序。一个 APK 包含了应用程序的所有文件,包括但不限于: - `AndroidManifest.xml` 文件:描述应用的元...
在Android开发中,日志(Log)系统是一个至关重要的工具,它可以帮助开发者追踪应用程序的运行状态,定位并解决出现的问题。本文将详细介绍Android中的Log系统,特别是如何使用LogCat进行调试。 **Android Log概述*...
总结来说,“microlog4android 自定义demo”展示了如何利用Microlog4Android框架在Android应用程序中实现日志记录的自定义功能,包括自定义输出位置(如SDCard)、级别、格式和过滤策略。这个例子对提升开发效率、...
2. **应用程序框架**:这部分详细阐述了Android应用程序框架的各个组件,包括Activity(活动)、Service(服务)、Broadcast Receiver(广播接收者)、Content Provider(内容提供者)以及Intent(意图)。...
在Android平台下进行程序调试是开发者必备的一项技能。调试是软件开发中不可或缺的环节,它帮助开发者发现并修正程序中的错误和异常行为。调试分为多种方法,比如使用开发工具、结合SDK调试以及使用单元测试等。 ...
Android崩溃日志收集是开发者用来诊断和修复应用程序错误的关键步骤。这篇文章将深入探讨如何有效地收集、分析和利用这些日志来优化应用性能。 首先,我们理解一下“Android崩溃”的概念。当Android应用因未捕获的...
3. **Logcat Explorer**:这个应用程序允许你在Android设备上直接查看和管理日志,支持日志保存、过滤和搜索功能。 4. **ACRA (Application Crash Report for Android)**:Google提供的一个开源库,用于自动收集...