参考:点击打开链接
使用包管理者对象PackageManager获取
Android系统为我们提供了很多服务管理的类,包括ActivityManager、PowerManager(电源管理)、AudioManager(音频管理)等。除此之外,还提供了一个PackageManger管理类,它的主要职责是管理应用程序包。 通过PackageManager,我们就可以获取应用程序信息。
AndroidManifest.XML文件是Android程序的全局配置文件,PackageManager获取的信息即来自AndroidManifest.XML。
一、PackageManager的功能:
1、安装,卸载应用
2、查询permission相关信息
3、查询Application相关信息(application,activity,receiver,service,provider及相应属性等)
4、查询已安装应用
5、增加,删除permission
6、清除用户数据、缓存,代码段等
二、 方法
说明: 获得已安装的应用程序信息 。可以通过getPackageManager()方法获得。
常用方法:
public abstract PackageManager getPackageManager()
功能:获得一个PackageManger对象
getPackageInfo();
public abstract PackageInfo getPackageInfo(String packageName, int flags)根据包名获取对应的PackageInfo
两个参数:1、包名-getPackageName 2、传0代表获取基本信息
常见字段:
(1)、public String packageName;包名
(2)、public String[] splitNames;
(3)、public int versionCode;版本号
(4)、public String versionName;版本名称
(5)、public ApplicationInfo applicationInfo;
(6)、public long firstInstallTime;第一次安装时间
(7)、public long lastUpdateTime;上次更新时间
(8)、public ActivityInfo[] activities;所有的Activity信息
(9)、public ActivityInfo[] receivers; 所有的广播接收者
(10)、public ServiceInfo[] services;所有的服务信息
(11)、public ProviderInfo[] providers;获取ContentProvide
(12)、public PermissionInfo[] permissions;所有的权限信息
三、例如,获取本地的版本名称
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
String versionName = getVersionName();
Log.i("版本名称:",versionName);
}
public String getVersionName() {
//[1]获取包管理者对象 packageManager
PackageManager pm = getPackageManager();
try {
//[2]从包管理者对象中获取指定包名的基本信息
PackageInfo packageInfo = pm.getPackageInfo(getPackageName(), 0);
//[3]获取版本名称,并返回
return packageInfo.versionName;
}catch (Exception e){
e.printStackTrace();
}
return null;
}
运行结果:
03-18 17:45:30.066 14055-14055/mobilesafe.itcast.com.demo001 I/版本名称:: 1.0
注意:android studio更改应用版本名称和版本号不是在清单文件中,而是在build.gradle中