几个Info系列的类的总结

 

首先我们来看一下PackageItemInfo,它是包含了一些信息的基类,它的直接子类有:ApplicationInfoComponentInfoInstrumentationInfoPermissionGroupInfoPermissionInfo。它的间接子类有:ActivityInfoProviderInfoServiceInfo。这个类包含的信息对于所有包中项目是平等的。

public class

PackageItemInfo

extends  Object
java.lang.Object
   ↳android.content.pm.PackageItemInfo
Known Direct Subclasses
Known Indirect Subclasses

 

这些Package items是被Package manager所持有的。这个类提供了属性的非常普通的基本设置:labeliconmeta-data。这个类的意图不是被自己调用。它在这只是简单地分享被package manager返回的所有items之间的普通定义。比如,它自己并不实现Parcelable接口,但却帮助实现了Parcelable的子类提供了方便的方法。

   ApplicationInfo是从一个特定的应用得到的信息。这些信息是从相对应的Androdimanifest.xml<application>标签中收集到的。

   ResolveInfo这个类是通过解析一个与IntentFilter相对应的intent得到的信息。它部分地对应于从AndroidManifest.xml<intent>标签收集到的信息。

  PackageManager这个类是用来返回各种的关联了当前已装入设备了的应用的包的信息。你可以通过getPacageManager来得到这个类。

  ApplicationInfoResolveInfo比较:前者能够得到IconLabelmeta-datadescription。后者只能得到IconLabel

  下面讲一下这几个类综合在一起的具体应用:

  通过调用PackageManager的方法可以得到两种不同的信息:

  首先要得到manager:

PackageManager manager = getPackageManager();

  方法一:

List<ApplicationInfo> appList = manager.getInstalledApplications(PackageManager.GET.UNINSTALLED_PAKAGES);

  它是通过解析AndroidManifest.xml<application>标签中得到的,所以它能得到所有的app

  方法二:

Intent intent = new Intent(Intent.A CTION_MAIN,null);

intent.addCategory(Intent.CATEGORY_LAUNCHER);

List<ResolveInfo> appList = manager.queryIntentActivities(intent,0);

  它是通过解析<Intent-filter>标签得到有

<action android:name=”android.intent.action.MAIN”/>

<action android:name=”android.intent.category.LAUNCHER”/>

  这样的app,所以得到的要比第一种方法少(前者比它多那种servicepreviderapp

 

public class

PackageInfo

extends  Object
implements  Parcelable
java.lang.Object
   ↳android.content.pm.PackageInfo
Fields
public ActivityInfo[] activities Array of all <activity> tags included under <application>, or null if there were none.
public ApplicationInfo

applicationInfo 

应用程序

Information collected from the <application> tag, or null if there was none.
public ConfigurationInfo[] configPreferencesApplication specified preferred configuration <uses-configuration> tags included under <manifest>, or null if there were none.
public int[]gidsAll kernel group-IDs that have been assigned to this package.
public InstrumentationInfo[] instrumentationArray of all <instrumentation> tags included under <manifest>, or null if there were none.
public String packageName  包名 The name of this package.
public PermissionInfo[] permissionsArray of all <permission> tags included under <manifest>, or null if there were none.
public ProviderInfo[] providersArray of all <provider> tags included under <application>, or null if there were none.
public ActivityInfo[] receiversArray of all <receiver> tags included under <application>, or null if there were none.
public FeatureInfo[] reqFeaturesThe features that this application has said it requires.
public String[] requestedPermissionsArray of all <uses-permission> tags included under <manifest>, or null if there were none.
public ServiceInfo[] servicesArray of all <service> tags included under <application>, or null if there were none.
public String sharedUserIdThe shared user ID name of this package, as specified by the <manifest> tag's sharedUserId attribute.
public intsharedUserLabelThe shared user ID label of this package, as specified by the <manifest> tag's sharedUserLabel attribute.
public Signature[] signaturesArray of all signatures read from the package file.
public int versionCode   版本号 The version number of this package, as specified by the <manifest> tag's versionCode attribute.
public String versionName 版本名 The version name of this package, as specified by the <manifest> tag's versionName attribute.

 

public class

ApplicationInfo

extends  PackageItemInfo
implements  Parcelable
java.lang.Object
   ↳android.content.pm.PackageItemInfo
    ↳android.content.pm.ApplicationInfo

 

public String backupAgentNameClass implementing the Application's backup functionality.
public String classNameClass implementing the Application object.
public String dataDirFull path to a directory assigned to the package for its persistent data.
public intdescriptionResA style resource identifier (in the package's resources) of the description of an application.
public booleanenabledWhen false, indicates that all components within this application are considered disabled, regardless of their individually set enabled status.
public intflagsFlags associated with the application.
public String manageSpaceActivityNameClass implementing the Application's manage space functionality.
public String permissionOptional name of a permission required to be able to access this application's components.
public String processNameThe name of the process this application should run in.
public String publicSourceDirFull path to the location of the publicly available parts of this package (i.e.
public String[] sharedLibraryFilesPaths to all shared libraries this application is linked against.
public String sourceDirFull path to the location of this package.
public inttargetSdkVersionThe minimum SDK version this application targets.
public String taskAffinityDefault task affinity of all activities in this application.
public intthemeA style resource identifier (in the package's resources) of the default visual theme of the application.
public intuidThe kernel user-ID that has been assigned to this application; currently this is not a unique ID (multiple applications can have the same uid).
Public Methods
int describeContents()
Describe the kinds of special objects contained in this Parcelable's marshalled representation.
void dump(Printer pw, String prefix)
CharSequence loadDescription(PackageManager pm)
Retrieve the textual description of the application.
String toString()
Returns a string containing a concise, human-readable description of this object.
void writeToParcel(Parcel dest, int parcelableFlags)

 

Inherited Methods
 From class android.content.pm.PackageItemInfo
void dumpBack(Printer pw, String prefix)
void dumpFront(Printer pw, String prefix)
Drawable loadIcon(PackageManager pm)
Retrieve the current graphical icon associated with this item.  加载图标
CharSequence loadLabel(PackageManager pm)
Retrieve the current textual label associated with this item. 加载标签名字
XmlResourceParser loadXmlMetaData(PackageManager pm, String name)
Load an XML resource attached to the meta-data of this item.
void writeToParcel(Parcel dest, int parcelableFlags)

 

 

public abstract class

PackageManager

extends  Object
java.lang.Object
   ↳android.content.pm.PackageManager
Known Direct Subclasses

 

 

Public Methods
abstract void addPackageToPreferred(String packageName)
This method is deprecated. This function no longer does anything; it was an old approach to managing preferred activities, which has been superceeded (and conflicts with) the modern activity-based preferences.
abstract boolean addPermission(PermissionInfo info)
Add a new dynamic permission to the system.
abstract boolean addPermissionAsync(PermissionInfo info)
Like  addPermission(PermissionInfo) but asynchronously persists the package manager state after returning from the call, allowing it to return quicker and batch a series of adds at the expense of no guarantee the added permission will be retained if the device is rebooted before it is written.
abstract void addPreferredActivity(IntentFilter filter, int match, ComponentName[] set, ComponentName activity)
This method is deprecated. This is a protected API that should not have been available to third party applications. It is the platform's responsibility for assigning preferred activities and this can not be directly modified. Add a new preferred activity mapping to the system. This will be used to automatically select the given activity component when Context.startActivity() finds multiple matching activities and also matches the given filter.
abstract String[] canonicalToCurrentPackageNames(String[] names)
Map from a packages canonical name to the current name in use on the device.
abstract int checkPermission(String permName, String pkgName)
Check whether a particular package has been granted a particular permission.
abstract int checkSignatures(String pkg1, String pkg2)
Compare the signatures of two packages to determine if the same signature appears in both of them.
abstract int checkSignatures(int uid1, int uid2)
Like  checkSignatures(String, String), but takes UIDs of the two packages to be checked.
abstract void clearPackagePreferredActivities(String packageName)
Remove all preferred activity mappings, previously added with  addPreferredActivity(IntentFilter, int, ComponentName[], ComponentName), from the system whose activities are implemented in the given package name.
abstract String[] currentToCanonicalPackageNames(String[] names)
Map from the current package names in use on the device to whatever the current canonical name of that package is.
abstract Drawable getActivityIcon(Intent intent)
Retrieve the icon associated with an Intent.
abstract Drawable getActivityIcon(ComponentName activityName)
Retrieve the icon associated with an activity.
abstract ActivityInfo getActivityInfo(ComponentName className, int flags)
Retrieve all of the information we know about a particular activity class.
abstract List<PermissionGroupInfo> getAllPermissionGroups(int flags)
Retrieve all of the known permission groups in the system.
abstract int getApplicationEnabledSetting(String packageName)
Return the the enabled setting for an application.
abstract Drawable getApplicationIcon(String packageName)
Retrieve the icon associated with an application.   获取程序图标
abstract Drawable getApplicationIcon(ApplicationInfo info)
Retrieve the icon associated with an application.
abstract ApplicationInfo getApplicationInfo(String packageName, int flags)
Retrieve all of the information we know about a particular package/application.
abstract CharSequence getApplicationLabel(ApplicationInfo info)
Return the label to use for this application.   获取程序描述
abstract int getComponentEnabledSetting(ComponentName componentName)
Return the the enabled setting for a package component (activity, receiver, service, provider).
abstract Drawable getDefaultActivityIcon()
Return the generic icon for an activity that is used when no specific icon is defined.
abstract Drawable getDrawable(String packageName, int resid, ApplicationInfo appInfo)
Retrieve an image from a package.
abstract List<ApplicationInfo> getInstalledApplications(int flags)
Return a List of all application packages that are installed on the device.  获取所有已安装程序信息
abstract List<PackageInfo> getInstalledPackages(int flags)
Return a List of all packages that are installed on the device.    获取所有已安装 程序的包信息
abstract String getInstallerPackageName(String packageName)
Retrieve the package name of the application that installed a package.
abstract InstrumentationInfo getInstrumentationInfo(ComponentName className, int flags)
Retrieve all of the information we know about a particular instrumentation class.
abstract Intent getLaunchIntentForPackage(String packageName)
Return a "good" intent to launch a front-door activity in a package, for use for example to implement an "open" button when browsing through packages.
abstract String getNameForUid(int uid)
Retrieve the official name associated with a user id.
PackageInfo getPackageArchiveInfo(String archiveFilePath, int flags)
Retrieve overall information about an application package defined in a package archive file
abstract int[] getPackageGids(String packageName)
Return an array of all of the secondary group-ids that have been assigned to a package.
abstract PackageInfo getPackageInfo(String packageName, int flags)
Retrieve overall information about an application package that is installed on the system.
abstract String[] getPackagesForUid(int uid)
Retrieve the names of all packages that are associated with a particular user id.
abstract PermissionGroupInfo getPermissionGroupInfo(String name, int flags)
Retrieve all of the information we know about a particular group of permissions.
abstract PermissionInfo getPermissionInfo(String name, int flags)
Retrieve all of the information we know about a particular permission.
abstract int getPreferredActivities(List<IntentFilter> outFilters, List<ComponentName> outActivities, String packageName)
Retrieve all preferred activities, previously added with  addPreferredActivity(IntentFilter, int, ComponentName[], ComponentName), that are currently registered with the system.
abstract List<PackageInfo> getPreferredPackages(int flags)
Retrieve the list of all currently configured preferred packages.
abstract ActivityInfo getReceiverInfo(ComponentName className, int flags)
Retrieve all of the information we know about a particular receiver class.
abstract Resources getResourcesForActivity(ComponentName activityName)
Retrieve the resources associated with an activity.
abstract Resources getResourcesForApplication(ApplicationInfo app)
Retrieve the resources for an application.
abstract Resources getResourcesForApplication(String appPackageName)
Retrieve the resources associated with an application.
abstract ServiceInfo getServiceInfo(ComponentName className, int flags)
Retrieve all of the information we know about a particular service class.
abstract FeatureInfo[] getSystemAvailableFeatures()
Get a list of features that are available on the system.
abstract String[] getSystemSharedLibraryNames()
Get a list of shared libraries that are available on the system.
abstract CharSequence getText(String packageName, int resid, ApplicationInfo appInfo)
Retrieve text from a package.
abstract XmlResourceParser getXml(String packageName, int resid, ApplicationInfo appInfo)
Retrieve an XML file from a package.
abstract boolean hasSystemFeature(String name)
Check whether the given feature name is one of the available features as returned by  getSystemAvailableFeatures().
abstract boolean isSafeMode()
Return whether the device has been booted into safe mode.
abstract List<ResolveInfo> queryBroadcastReceivers(Intent intent, int flags)
Retrieve all receivers that can handle a broadcast of the given intent.
abstract List<ProviderInfo> queryContentProviders(String processName, int uid, int flags)
Retrieve content provider information.
abstract List<InstrumentationInfo> queryInstrumentation(String targetPackage, int flags)
Retrieve information about available instrumentation code.
abstract List<ResolveInfo> queryIntentActivities(Intent intent, int flags)
Retrieve all activities that can be performed for the given intent.
abstract List<ResolveInfo> queryIntentActivityOptions(ComponentName caller, Intent[] specifics, Intent intent, int flags)
Retrieve a set of activities that should be presented to the user as similar options.
abstract List<ResolveInfo> queryIntentServices(Intent intent, int flags)
Retrieve all services that can match the given intent.
abstract List<PermissionInfo> queryPermissionsByGroup(String group, int flags)
Query for all of the permissions associated with a particular group.
abstract void removePackageFromPreferred(String packageName)
This method is deprecated. This function no longer does anything; it was an old approach to managing preferred activities, which has been superceeded (and conflicts with) the modern activity-based preferences.
abstract void removePermission(String name)
Removes a permission that was previously added with  addPermission(PermissionInfo).
abstract ResolveInfo resolveActivity(Intent intent, int flags)
Determine the best action to perform for a given Intent.
abstract ProviderInfo resolveContentProvider(String name, int flags)
Find a single content provider by its base path name.
abstract ResolveInfo resolveService(Intent intent, int flags)
Determine the best service to handle for a given Intent.
abstract void setApplicationEnabledSetting(String packageName, int newState, int flags)
Set the enabled setting for an application This setting will override any enabled state which may have been set by the application in its manifest.
abstract void setComponentEnabledSetting(ComponentName componentName, int newState, int flags)
Set the enabled setting for a package component (activity, receiver, service, provider).

 

 

FROM:http://www.androidsnippets.org/snippets/70/

 

Java代码 
  1. class PInfo {    
  2.     private String appname = "";    
  3.     private String pname = "";    
  4.     private String versionName = "";    
  5.     private int versionCode = 0;    
  6.     private Drawable icon;    
  7.     private void prettyPrint() {    
  8.         log(appname + "\t" + pname + "\t" + versionName + "\t" + versionCode + "\t");    
  9.     }    
  10. }    
  11.     
  12. private void listPackages() {    
  13.     ArrayList<PInfo> apps = getInstalledApps(false); /* false = no system packages */    
  14.     final int max = apps.size();    
  15.     for (int i=0; i<max; i++) {    
  16.         apps.get(i).prettyPrint();    
  17.     }    
  18. }    
  19.     
  20. private ArrayList<PInfo> getInstalledApps(boolean getSysPackages) {    
  21.     ArrayList<PInfo> res = new ArrayList<PInfo>();            
  22.     List<PackageInfo> packs = getPackageManager().getInstalledPackages(0);    
  23.     for(int i=0;i<packs.size();i++) {    
  24.         PackageInfo p = packs.get(i);    
  25.         if ((!getSysPackages) && (p.versionName == null)) {    
  26.             continue ;    
  27.         }    
  28.         PInfo newInfo = new PInfo();    
  29.         newInfo.appname = p.applicationInfo.loadLabel(getPackageManager()).toString();    
  30.         newInfo.pname = p.packageName;    
  31.         newInfo.versionName = p.versionName;    
  32.         newInfo.versionCode = p.versionCode;    
  33.         newInfo.icon = p.applicationInfo.loadIcon(getPackageManager());    
  34.         res.add(newInfo);    
  35.     }    
  36.     return res;     
  37. }    

获取未安装的APK信息

java代码 
  1. /** 获取未安装的APK信息 
  2.      * @param context 
  3.      * @param archiveFilePath APK文件的路径。如:/sdcard/download/XX.apk 
  4.      */  
  5.     public void getUninatllApkInfo(Context context, String archiveFilePath){  
  6.         PackageManager pm = context.getPackageManager();  
  7.         PackageInfo info = pm.getPackageArchiveInfo(archiveFilePath, PackageManager.GET_ACTIVITIES);  
  8.         if(info != null){  
  9.             ApplicationInfo appInfo = info.applicationInfo;  
  10.             String appName = pm.getApplicationLabel(appInfo).toString();  
  11.             String packageName = appInfo.packageName;  
  12.             Drawable icon = pm.getApplicationIcon(appInfo);  
  13.         }  
  14.     }  

 

据测试:无法获取未安装APK的图片。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值