Android中PackageManager类的简单介绍

1.PackageManager这个类,表层意思是包管理者,既然可以管理包,那么包下的一些东西便可以获取,其中可以获取应用图标和应用名称以及包名。

    通过下面一行代码实例化PackageManager类:

PackageManager manager = getPackageManager();//实例化PackageMangager

2.初始化PackageManage后,可以获得PackageInfo这个类的对象,即包的相关信息:

PackageInfo info = manager.getPackageInfo(getPackageName(), 0);//获得包的信息

获得PackageInfo对象后,可以获得相应的信息,而这些信息有点对应于AndroidManifest.xml文件下的各个属性和标记,貌似可以通通获得,不信你看下面的代码:

首先,先附上一个新建项目后所生成的AndroidManifest.xml文件:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.androidtest"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="19" />

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme">
        <activity
            android:name="com.example.androidtest.MainActivity"
            android:label="@string/app_name"
            android:icon="@drawable/app" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>


在这个xml文件中,有versionCode和versionName这两个相关内容,可以通过下面的代码获取:

int versioncode=info.versionCode;//获得版本码
String versionname=info.versionName;//获得版本号

也可以获得 permission权限,application应用,providers,activity,receiver,service服务等等:

String permission=permissionInfos.toString();
ApplicationInfo applicationInfo=info.applicationInfo;//获得application应用
ProviderInfo[] providerInfo=info.providers;//获得providers
ActivityInfo[] activityInfo=info.activities;//获得activity
activityInfo=info.receivers;//获得receiver
ServiceInfo[] serviceInfo=info.services;//获得service

其中获得ApplicationInfo的应用信息类的对象后,还可以获得该应用的图标,名称,类名等等:

ApplicationInfo applicationInfo=info.applicationInfo;//获得application应用
int icon=applicationInfo.icon;//获取应用图标
String classname=applicationInfo.className;//获得类名


3.以上获得的只不过是属于该项目中的相关信息,如果要获得手机中所有已经安装过的apk应用程序时,就应该用下面这行代码:

List<PackageInfo> packageInfos = getPackageManager().getInstalledPackages(PackageManager.GET_UNINSTALLED_PACKAGES);

如果要设置文本和图片的话可以利用下面的代码,其中position是一个int整型

tv.setText(packageInfos.get(position).applicationInfo.loadLabel(getPackageManager()));// 获取应用名称
iv.setImageDrawable(packageInfos.get(position).applicationInfo.loadIcon(getPackageManager()));// 获取应用图标

完整代码是:

class GridViewAdapter extends BaseAdapter {
	
	LayoutInflater inflater;

	public GridViewAdapter(Context context) {
		inflater = LayoutInflater.from(context);
	}
	@Override
	public int getCount() {
		// TODO Auto-generated method stub
		return packageInfos.size();
	}

	@Override
	public Object getItem(int arg0) {
		// TODO Auto-generated method stub
		return packageInfos.get(arg0);
	}

	@Override
	public long getItemId(int position) {
		// TODO Auto-generated method stub
		return position;
	}

	@Override
	public View getView(int position, View convertView, ViewGroup parent) {
		View view = inflater.inflate(R.layout.gv_item, null);
		TextView tv = (TextView) view.findViewById(R.id.gv_item_appname);
		ImageView iv = (ImageView) view.findViewById(R.id.gv_item_icon);
		//tv2.setText(packageInfos.get(position).packageName);
		tv.setText(packageInfos.get(position).applicationInfo.loadLabel(getPackageManager()));// 获取应用名称
		iv.setImageDrawable(packageInfos.get(position).applicationInfo.loadIcon(getPackageManager()));// 获取应用图标
		return view;
	}

}

要获得相应的包名可以通过packageInfos.get(position).packageName,在Eclipse工具中可以利用提示来获取相应的信息,activity,service,permission等等都可以获得。


4.以上就是对PackageManager类的简单介绍,仅供大家学习参考,写得不好,请见谅,如有错误请指出,谢谢!







评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值