获取android设备已安装应用信息

本文将介绍如何获取设备中已经安装的应用信息,包括:应用名称、包名、图标等。

获得信息列表后,选择某一项记录还可以启动对应的应用!

1.代码实现

package com.example.showapplist;

import java.util.ArrayList;
import java.util.List;

import android.content.pm.ApplicationInfo;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.os.Bundle;
import android.support.v4.app.ListFragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ListView;

public class AppListFragment extends ListFragment {

	private ArrayList<AppInfo> appList = new ArrayList<AppInfo>();

	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		getAppList();
		AppAdapter adapter = new AppAdapter(this.getActivity(), appList);
		setListAdapter(adapter);
	}

	@Override
	public View onCreateView(LayoutInflater inflater, ViewGroup container,
			Bundle savedInstanceState) {
		return super.onCreateView(inflater, container, savedInstanceState);
	}

	@Override
	public void onListItemClick(ListView l, View v, int position, long id) {
		// 启动所选应用
        startActivity(appList.get(position).appIntent);
	}

	/**
	 * 获取非系统应用信息列表
	 */
	private void getAppList() {
		PackageManager pm = this.getActivity().getPackageManager();
		// Return a List of all packages that are installed on the device.
		List<PackageInfo> packages = pm.getInstalledPackages(0);
		for (PackageInfo packageInfo : packages) {
			// 判断系统/非系统应用
			if ((packageInfo.applicationInfo.flags & ApplicationInfo.FLAG_SYSTEM) == 0)	// 非系统应用
			{
				AppInfo info = new AppInfo();
				info.appName = packageInfo.applicationInfo.loadLabel(pm)
						.toString();
				info.pkgName = packageInfo.packageName;
				info.appIcon = packageInfo.applicationInfo.loadIcon(pm);
				// 获取该应用安装包的Intent,用于启动该应用
				info.appIntent = pm.getLaunchIntentForPackage(packageInfo.packageName);
				appList.add(info);
			} else {
				// 系统应用        
			}

		}
	}
}

其中,getAppList()方法获得了当前设备所安装的应用信息。

通过以下代码判断某一应用是系统应用还是非系统应用:

			// 判断系统/非系统应用
			if ((packageInfo.applicationInfo.flags & ApplicationInfo.FLAG_SYSTEM) == 0)	// 非系统应用
			{
			} else {
				// 系统应用        
			}

通过下面代码获得启动另外一个应用所需的Intent:

				// 获取该应用安装包的Intent,用于启动该应用
				info.appIntent = pm.getLaunchIntentForPackage(packageInfo.packageName); 

2.工程源码

http://download.csdn.net/detail/chadeltu/8554415

时间: 2024-07-29 09:37:01

获取android设备已安装应用信息的相关文章

查看当前android设备已安装的第三方包

查看当前android设备已安装的第三方包 adb shell pm list package -3 2        adb shell "getprop ro.build.version.sdk"

【Android】获取手机中已安装apk文件信息(PackageInfo、ResolveInfo)(应用图片、应用名、包名等)

众所周知,通过PackageManager可以获取手机端已安装的apk文件的信息,具体代码如下 [java] view plaincopyprint? PackageManager packageManager = this.getPackageManager(); List<PackageInfo> packageInfoList = packageManager.getInstalledPackages(0); 通过以上方法,可以得到手机中安装的所有应用程序,既包括了手动安装的apk包的信

android插件化-获取apkplug框架已安装插件-03

上一篇文章成功的将apkplug框架嵌入了应用中并且启动 链接http://www.apkplug.com/blog/?post=10 这一篇文章实现如何获取所有已安装插件 一 获取框架的SystemBundle的上下文BundleContext apkplug框架启动会自动创建一个SystemBundle, 它是框架的第一个插件不可停止和卸载,通过它我们可以与apkplug和其他插件通信 FrameworkInstance.getSystemBundle() 便可以获取到SystemBundl

Shell下获取Android设备信息

使用adb.exe shell进入shell界面,然后通过下列命令即可获取需要的信息 :) 1 // getprop命令可获取很多信息哟 2 // 1.获取厂商名称 3 getprop ro.product.brand 4 // 2.设备型号 5 getprop ro.product.model 6 // 3.安卓版本 7 getprop ro.build.version.release 8 // 4.网卡名称 9 wifi.interface 10 // 5.Google glass系统版本

Linux-rpm命令-查看已安装软件包信息及未安装rpm包信息

博文说明[前言]: 本文将通过个人口吻介绍rpm命令,包括查看已安装软件包信息及未安装rpm包信息. 在目前时间点[2017年6月12号]下,所掌握的技术水平有限,可能会存在不少知识理解不够深入或全面,望大家指出问题共同交流,在后续工作及学习中如发现本文内容与实际情况有所偏差,将会完善该博文内容. 正文: RPM常用命令中的各种缩写选项,其实是有依据的,弄明白之后,其实很好玩,我们可以参考下方:q=queryp=packagei=infol=listf=filec=conf... 一:查看系统已

获取Android设备WIFI的MAC地址 “MAC地址”

需要指出的是:wifi状态和wifi AP状态是互斥的状态:也就是一旦发现WIFI AP打开,WIFI是不能被打开的. 获取Android设备的WIFI MAC地址,首先需要将设备中的WIFI个人热点(AP)关闭:WIFI状态和WIFI AP状态是互斥的两种状态.也就是说:在WIFI AP打开的状态下,WIFI是不能被正常打开的. android系统获取MAC地址的多种方式遍历. 方法一:使用NetworkInterface 方法二: private static String getIpAnd

获取Android设备的方向

带有g-sensor的Android设备上可通过API获取到设备的运动加速度,应用程序通过一些假设和运算,可以从加速度计算出设备的方向 获取设备运动加速度的基本代码是: SensorManager sm = (SensorManager) context.getSystemService(Context.SENSOR_SERVICE); sm.registerListener(new SensorEventListener() { public void onSensorChanged(Sens

获取android设备wifi连接状态

本文将介绍如何获取android设备wifi连接状态! 添加访问权限(AndroidManifest.xml文件里) <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> Java代码(MainActivity.java文件) package com.example.androidtest; import android.net.ConnectivityManager; impo

关于获取Android系统所有已安装App信息的一些操作(详细)

转载请注明出处:http://blog.csdn.net/qinjuning       本节内容是如何获取Android系统中应用程序的信息,主要包括packagename.label.icon.占用大小等.具体分为两个 部分,计划如下:  第一部分: 获取应用程序的packagename.label.icon等 :             第二部分:获取应用程序的占用大小,包括:缓存大小(cachsize).数据大小(datasize). 每部分都为您准备了简单丰富的实例,您一定不会错过.