`
lovecontry
  • 浏览: 1095154 次
文章分类
社区版块
存档分类
最新评论

Android 怎么样获得应用信息

 
阅读更多

程序大概分成三个部分:
1.获取手机已安装的所有应用package的信息(其中包括用户自己安装的,还有系统自带的);
2.滤除系统自带应用;
3.通过列表显示出应用程序的图标(icon),和其他文字信息(应用名称,包名称package name,版本号等等)
首先,我们定义一个数据结构,来保存应用程序信息(icon,name,packageName,versionName,versionCode,等)

下面我们就来看看代码吧,这样我们大家看的风直观一些:

java代码:
public class AppInfo {

public String appName="";
public String packageName="";
public String versionName="";
public int versionCode=0;
public Drawable appIcon=null;
public void print(){

Log.v("app","Name:"+appName+" Package:"+packageName);
Log.v("app","Name:"+appName+" versionName:"+versionName);
Log.v("app","Name:"+appName+" versionCode:"+versionCode);
}

}


然后我们通过PackageManager 来获取已安装的应用包信息。

java代码:
ArrayList<AppInfo> appList = new ArrayList<AppInfo>(); //用来存储获取的应用信息数据List<PackageInfo> packages = getPackageManager().getInstalledPackages(0);

for(int i=0;i<packages.size();i++) {
PackageInfo packageInfo = packages.get(i);
AppInfo tmpInfo = new AppInfo();
tmpInfo.appName = packageInfo.applicationInfo.loadLabel(getPackageManager()).toString();
tmpInfo.packageName = packageInfo.packageName;
tmpInfo.versionName = packageInfo.versionName;
tmpInfo.versionCode = packageInfo.versionCode;
tmpInfo.appIcon = packageInfo.applicationInfo.loadIcon(getPackageManager());
appList.add(tmpInfo);
}//好啦 这下手机上安装的应用数据都存在appList里了。


那么如何判断一个应用是否为系统应用呢?

java代码:
if((packageInfo.applicationInfo.flags&ApplicationInfo.FLAG_SYSTEM)==0){
//非系统应用
}else{
//系统应用        
}


所以如果只需要获取到非系统应用信息,代码如下:

java代码:
ArrayList<AppInfo> appList = new ArrayList<AppInfo>(); //用来存储获取的应用信息数据
List<PackageInfo> packages = getPackageManager().getInstalledPackages(0);

for(int i=0;i<packages.size();i++) {
PackageInfo packageInfo = packages.get(i);
AppInfo tmpInfo = new AppInfo();
tmpInfo.appName = packageInfo.applicationInfo.loadLabel(getPackageManager()).toString();
tmpInfo.packageName = packageInfo.packageName;
tmpInfo.versionName = packageInfo.versionName;
tmpInfo.versionCode = packageInfo.versionCode;
tmpInfo.appIcon = packageInfo.applicationInfo.loadIcon(getPackageManager());
if((packageInfo.applicationInfo.flags&ApplicationInfo.FLAG_SYSTEM)==0){
appList.add(tmpInfo);//如果非系统应用,则添加至appList
}

}

分享到:
评论

相关推荐

    Android中获取应用程序列表信息

    在Android系统中,获取应用程序列表信息是开发过程中常见的需求,比如构建应用管理界面或实现某些特定功能。以下将详细介绍如何通过编程方式实现这四个主要目标: 1. **Android中获取所有应用程序列表信息** 要...

    android获取手机应用信息

    总结来说,获取Android手机应用信息主要依赖`PackageManager`,通过它可以获取应用的多种信息,包括名称、包名、版本信息等。开发者可以通过这些信息进行各种定制化操作,如分析设备上的应用状态,或者根据特定包名...

    获取android设备已安装应用信息(包名、图标、应用名)

    总结来说,获取Android设备已安装应用信息主要包括获取PackageManager服务、列出安装应用、遍历并解析PackageInfo对象以及处理应用图标。这个过程对于构建应用管理功能、数据分析或其他与应用信息相关的功能至关重要...

    Android中获取所有应用程序信息

    下面将详细讲解如何通过`queryIntentActivities()`方法获取应用信息。 首先,我们需要创建一个`Intent`对象,用于定义我们想要查询的类型。通常,我们可以使用`Intent.ACTION_MAIN`和`Intent.CATEGORY_LAUNCHER`来...

    android中获取应用程序包的信息

    在Android系统中,获取应用程序包的信息是一项常见的任务,这通常涉及到获取应用的图标、包名以及应用名称等元数据。本文将深入探讨如何在Android环境中实现这一功能,并结合提供的"packageinfo_adapterLearn"示例...

    android获取已安装应用的信息

    它是Android SDK提供的一种接口,用于获取设备上的应用信息。通过`Context`对象,我们可以获取到`PackageManager`实例: ```java PackageManager packageManager = context.getPackageManager(); ``` 获取已安装...

    Android中获取应用程序(包)的信息 PackageManager的使用

    通过`PackageManager`获取应用信息,并结合`ListView`或者`RecyclerView`展示,可以实现这样的功能。`ApplicationInfo`对象包含了每个应用的启动类(`className`),这可以用于启动应用。 总的来说,`...

    Android高级应用源码-获取手机应用信息.zip

    在Android平台上,获取手机应用信息是一项常见的任务,它涉及到对设备上安装的应用程序进行查询、分析和管理。这个"Android高级应用源码-获取手机应用信息.zip"的压缩包很可能包含了一个示例项目,用于演示如何通过...

    Android获取指定应用,单独应用的流量统计

    使用ContentResolver查询`content://telephony/usagestats` Uri来获取应用的数据使用信息。你可以根据应用包名(packageName)筛选出对应应用的数据: ```java ContentResolver resolver = getContentResolver();...

    Android开发,获取当前手机安装的所有应用、根据包名获取应用信息、获取当前应用程序的包名、获取程序 图标等关于安装在手机上的

    Android开发,获取当前手机安装的所有应用、根据包名获取应用信息、获取当前应用程序的包名、获取程序 图标、获取程序的版本号、获取程序的名字、获取程序的权限、获取程序的签名、获取当前包名的 SHA1、将获取到得...

    Android系统信息和Apk应用信息获取.rar

    在Android平台上,获取系统信息和Apk应用信息是开发者日常工作中常见的需求。这个压缩包"Android系统信息和Apk应用信息获取.rar"可能包含了多个示例或者库,用于帮助开发者实现这些功能。由于无法直接查看具体内容,...

    Android 应用耗电量获取

    下面将详细介绍如何通过系统签名获取应用的耗电量以及相关的技术细节。 1. **BatteryStats服务**: Android系统维护了一个名为BatteryStats的服务,它负责收集和存储关于各个应用和硬件组件的电量消耗数据。...

    Android中获取系统内存信息以及进程信息

    不过,由于隐私限制,这个方法在Android 3.1及以上版本只能获取到当前应用或被授予`GET_TASKS`权限的应用的信息。 ```java ActivityManager.RunningTaskInfo taskInfo; List&lt;ActivityManager.RunningTaskInfo&gt; ...

    android 获取最近应用

    Android系统维护了一个最近任务列表(Recent Task List),它包含了用户最近启动和交互的应用信息。这个列表可以在设备的最近应用切换界面查看,通常通过长按Home键或滑动屏幕顶部的任务切换器来访问。 要获取这个...

    android获取应用程序的权限列表

    本文将详细讲解如何在Android系统中获取应用程序的权限列表,并针对日志记录中使用的"jishen" TAG进行讨论。 1. **权限模型概述** Android的权限模型基于声明式权限,开发者在应用的AndroidManifest.xml文件中声明...

    Android获取应用程序的包大小\缓存大小\数据大小

    系统服务 `ActivityManagerNative` 提供了获取应用信息的方法,但它是隐藏的,所以我们需要通过反射来调用。首先创建一个AIDL接口: ```aidl interface IMyAppSizeService { int getAppSize(String packageName); ...

    android 7.1 获取各个应用的各种内存信息的app demo

    在Android系统中,获取应用程序的内存信息是进行性能分析、优化和故障排查的重要步骤。针对Android 7.1,这个"android 7.1 获取各个应用的各种内存信息的app demo"是一个示例项目,旨在教开发者如何在不依赖外部开源...

    android获取应用32位签名

    获取应用签名通常涉及以下步骤: 1. **使用` jarsigner `命令**:这是最常用的方法,通过Java的` jarsigner `工具来对APK进行签名。打开命令行,进入APK所在的目录,然后执行如下命令: ``` jarsigner -verbose -...

    获取所有应用程序的数据

    1. **PackageManager**: Android中的`PackageManager`服务是获取和管理Android系统中应用信息的核心接口。在这个方法中,`Context.getPackageManager()`用于获取当前上下文的`PackageManager`实例。 2. **Intent**:...

    Android-获取取手机敏感信息Android6.0之上兼容

    自Android 6.0(API级别23)引入了权限动态管理机制,应用在运行时需要获取用户授权才能访问某些敏感信息,如联系人、短信、位置等。本教程将详细讲解如何在Android 6.0及以上版本中兼容地获取手机敏感信息。 首先...

Global site tag (gtag.js) - Google Analytics