通过apk安装包直接获取入口类和包名暨PackageManager 类的介绍

来源:互联网 发布:c语言if else多个 编辑:程序博客网 时间:2024/05/16 15:51

直接贴代码,代码中有详解

public class TestPackageName extends Activity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.test_package_name);// String archiveFilePath =// "/com.bazik.store_v1.2_w_201409060304.apk";// 待测的包// 此路径为apk所在的路径,这里没有做相关的sd卡判断String apkPath = Environment.getExternalStorageDirectory().getPath() + "/Exp_Time12Or24_example.apk";PackageManager pm = getPackageManager();PackageInfo info = pm.getPackageArchiveInfo(apkPath, PackageManager.GET_ACTIVITIES);if (info != null) {ApplicationInfo appInfo = info.applicationInfo;String appName = pm.getApplicationLabel(appInfo).toString(); // 得到app名称String packageName = appInfo.packageName; // 得到安装包名称String version = info.versionName; // 得到版本信息TextView tv = (TextView) findViewById(R.id.textView); // TEXT显示tv.setText("packageName:" + packageName + "\nversion:" + version + "\n入口类::" + info.activities[0].name+ "\nappName:" + appName);}}}



关于PackageManager类的介绍

PackageManager相关

      本类API是对所有基于加载信息的数据结构的封装,包括以下功能:

安装,卸载应用查询permission相关信息

查询Application相关信息(application,activity,receiver,service,provider及相应属性等)

查询已安装应用

增加,删除permission

清除用户数据、缓存,代码段等

  1. /** 
  2.      * PackageManager介绍: 
  3.      * 本类API是对所有基于加载信息的数据结构的封装,包括以下功能:  
  4.      * 安装,卸载应用 查询permission相关信息 查询Application相关 
  5.      * 信息(application,activity,receiver,service,provider及相应属性等) 
  6.      * 查询已安装应用 增加,删除permission 清除用户数据、缓存,代码段等 非查询相关的API需要特定的权限。 
  7.      * 主要包含了,安装在当前设备上的应用包的相关信息 
  8.      * 如下:获取已经安装的应用程序的信息 
  9.      */  
  10.     private HashMap<String, String> installPackagesInfo(){  
  11.         // 获取packageManager对象  
  12.         PackageManager packageManager = this.getPackageManager();  
  13.         /*getInstalledApplications 返回当前设备上安装的应用包集合 
  14.          * ApplicationInfo对应着androidManifest.xml中的application标签。通过它可以获取该application对应的信息 
  15.          */  
  16.         List<ApplicationInfo> applicationInfos = packageManager.getInstalledApplications(0);  
  17.         HashMap<String, String> resultMap = new HashMap<String, String>();  
  18.         Iterator<ApplicationInfo> iterator = applicationInfos.iterator();  
  19.         while(iterator.hasNext()){  
  20.             ApplicationInfo applicationInfo = iterator.next();  
  21.             String packageName = applicationInfo.packageName;// 包名  
  22.             String packageLabel = packageManager.getApplicationLabel(applicationInfo).toString();//获取label  
  23.             resultMap.put(packageLabel, packageName);  
  24.         }  
  25.           
  26.         return resultMap;  
  27.           
  28.     }  

另外在PackageManager类中,我们发现了几个很好玩的方法。

 

  

 

XMLResourceParse getXml(String packageName,int resid,ApplicationInfo appInfo)可以从指定的包中加载某个xml文件。

以上PackageManager介绍参考http://blog.csdn.net/chenzheng_java/article/details/6386517


1 0
原创粉丝点击