首页 > 移动平台 > 详细

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

时间:2015-04-01 17:42:14      阅读:355      评论:0      收藏:0      [点我收藏+]

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

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

技术分享技术分享


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


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

原文:http://blog.csdn.net/chadeltu/article/details/44808887

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!