PackageManager

android有很多服务管理类,如ActivityManager,PowerManager,AudioManager,RingtoneManager,AlarmManager,KeyguardManager,NotificationManager,SearchManager等等。


PackageMagager的功能:

安装卸载程序

搞版本该功能函数已经被废了。

查询application相关信息(包括application、activity、service、receive、provide、permission等及他们的属性)

List<ResolveInfo> queryBroadcastReceivers(Intent intent, int flags);

List<ProviderInfo> queryContentProviders(String processName, int uid, int flags);

List<InstrumentationInfo> queryInstrumentation(String targetPackage, int flags);

List<ResolveInfo> queryIntentActivities(Intent intent, int flags);

List<ResolveInfo> queryIntentActivityOptions(ComponentName caller, Intent[] specifics, Intent intent, int flags);

List<ResolveInfo> queryIntentContentProviders(Intent intent, int flags);

List<ResolveInfo> queryIntentServices(Intent intent, int flags);

List<PermissionInfo> queryPermissionsByGroup(String group, int flags);

查询已安装应用

List<ApplicationInfo> getInstalledApplications(int falgs);

List<PackageInfo> getInstalledPackages(int falgs);

还有好多其他函数好多啊。



Launcher中allapps里面的图标可以用以下代码找出来:

PackageManager pm = this.getPackageManager();

Intent intent = new Intent(Intent.ACTION_MAIN, null);

intent.addCategory(Intent.GATEGORY_LAUNCHER);

List<ResolveInfo> resolveInfos = pm.queryIntentActivities(intent, PackageManager.SIGNATURE_MATCH);

Collections.sort(resolveInfos, new ResolveInfo.DisplayNameComparator(pm)); //排个序

for(ResolveInfo reInfo : resolveInfos){

//想怎么处理就怎么处理

reInfo.LoadLabel(pm); //Label用来显示

reInfo.LoadIcon(pm); //Icon用来显示

reInfo.activityInfo.packageName;

reInfo.activityInfo.name; //上面包名+这个是类名用于启动程序

}



PackageInfo中的字段与manifest标签一一对应关系如下:

<manifest 

  package=""  ==> public String packageName;

  android:versionCode=""  ==>  public int versionCode;

  android:versionName=""  ==>  public String versionName;

  android:sharedUserId=""  ==>  public String sharedUserId; 

  android:sharedUserLabel=""  ==>  public int sharedUserLabel;(为什么ID是String类型,Label是Int类型?)

>

  <application>  ==> public ApplicationInfo applicationInfo;

    <activity></activity>  ==> public ActivityInfo[] activities;

    <receivers></receivers>  ==> public ActivityInfo[] receivers;

    <services></services>  ==> public ServiceInfo[] services;

    <provider></provider>  ==> public ProviderInfo[] providers;

  </application>

  <instrumentation></instrumentation>  ==> public InstrumentationInfo[] instrumentation;

  <permission></permission> ==> public PermissionInfo[] permissions;

  <uses-permission></uses-permission>  ==> public String[] requestedPermissions;

  <uses-configuration></uses-configuration>  ==> public ConfigurationInfo[] configPreferences;

</manifest>

到此结束,下面还有几个PackageInfo中的字段不在manifest中的:

public long firstInstallTime;(第一次安装时间)

public long lastUpdateTime;(最后一次更新时间)

public int[] gids;(kernel group-IDs)

public PeatureInfo[] reqFeatures;

public Signature[] signatures;




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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值