PackageItemInfo它包含了一些信息的基类。
它的直接子类有:
ApplicationInfo、 ComponentInfo、InstrumentationInfo、PermissionGroupInfo、PermissionInfo.
它的间接子类有:
ActivityInfo、ProviderInfo、ServiceInfo。
这个类包含的信息对于所有包中项目是平等的。这些Package items是被Package manager所持有的。
PackageManager这个类是用来返回各种的关联了当前已装入设备了的应用的包的信息。你可以通过getPacageManager来得到这个类。
PackageManager manager = getPackageManager();//得到manager
ApplicationInfo是从一个特定的应用得到的信息。这些信息是从相对应的Androdimanifest.xml的< application>标签中收集到的。
List< ApplicationInfo> appList = manager.getInstalledApplications
ResolveInfo这个类是通过解析一个与IntentFilter相对应的intent得到的信息。
它部分地对应于从AndroidManifest.xml的< intent>标签收集到的信息。
Intent intent = new Intent(Intent.A CTION_MAIN,null);
intent.addCategory(Intent.CATEGORY_LAUNCHER);
//通过Intent查找相关的Activity,更准确
List< ResolveInfo> appList = manager.queryIntentActivities(intent,0);
eg:
ResolveInfo resolve = appList.get(i);
resolve.activityInfo.packageName//包名获取方法
resolve.loadIcon(packageManager)//icon获取获取方法
resolve.loadLabel(packageManager).toString()//应用名称获取方法
[注]:
它是通过解析< Intent-filter>标签得到有
< action android:name=”android.intent.action.MAIN”/>
< action android:name=”android.intent.category.LAUNCHER”/>
这样的app,所以得到的要比第一种方法少(前者比它多那种service、previder等app)。
[*] ApplicationInfo与ResolveInfo比较:前者能够得到Icon、Label、meta-data、description。
后者只能得到Icon、Label。
[代码示例]
1.通过PackageManager可以获取手机端已安装的apk文件的信息:
PackageManager packageManager = this.getPackageManager();
List<PackageInfo> packageInfoList = packageManager.getInstalledPackages(0);
通过以上方法,可以得到手机中安装的所有应用程序,既包括了手动安装的apk包的信息,
也包括了系统预装的应用软件的信息。要区分这两类软件可使用以下方法:
a.从packageInfoList获取的packageInfo,再通过packageInfo.applicationInfo获取applicationInfo。
b.判断(applicationInfo.flags & ApplicationInfo.FLAG_SYSTEM)的值,该值大于0时,表示获取的应
用为系统预装的应用,反之则为手动安装的应用。
//获取手机内所有应用
public static List<PackageInfo> getAllApps(Context context) {
List<PackageInfo> apps = new ArrayList<PackageInfo>();
PackageManager pManager = context.getPackageManager();
//获取手机内所有应用
List<PackageInfo> paklist = pManager.getInstalledPackages(0);
for (int i = 0; i < paklist.size(); i++) {
PackageInfo pak = (PackageInfo) paklist.get(i);
//获取应用程序icon:pManager.getApplicationIcon(pak.applicationInfo);
//获取应用程序名字:pManager.getApplicationLabel(pak.applicationInfo).toString());
//获取应用程序包名:pak.applicationInfo.packageName;
//判断是否为非系统预装的应用程序
if ((pak.applicationInfo.flags & pak.applicationInfo.FLAG_SYSTEM) <= 0) {
// customs applications
apps.add(pak);
}
}
return apps;
}
分享到:
相关推荐
博文附件,通过PackageInfo获取App签名信息
android获取未安装APK文件的图标 android开发技巧整理
一、获取安装包信息 代码如下:/** * 获取apk包的信息:版本号,名称,图标等 * @param absPath apk包的绝对路径 * ... PackageInfo pkgInfo = pm.getPackageArchiveInfo(absPath,PackageManager.GET_ACTIVITIES); if
本文实例讲述了Android实现整理PackageManager获取所有安装程序信息的方法。分享给大家供大家参考,具体如下: List<PackageInfo> packs = getPackageManager().getInstalledPackages(0);//获取安装程序的包名 for ...
PackageManager实例,内容包含ApplicationInfo、PackageInfo、ResolveInfo、ActivityInfo的实例
packageInfo = getPackageManager().getPackageInfo(getPackageName(), PackageManager.GET_PERMISSIONS); ActivityCompat.requestPermissions(this, requestPermissions, 1); 一:网络权限 二:蓝牙权限 三:...
Android PackageManager 有很多方法是没有暴漏出来的,我们如果想调用的话需要用Java反射。android_dependency.jar 提供了反射调用相关的class定义,直接放到你的工程libs目录下面,然后就可以进行反射调用...
if ("android.permission.INTERNET".equals(permission)){ //找到应用程序里面又网络权限 TrifficInfo trifficInfo=new TrifficInfo(); trifficInfo.setPackname(info.packageName); trifficInfo.setAppname...
映射示例要将<leader>N映射到:PackageInfo请将以下内容添加到您的.vimrc文件中: :nnoremap N:PackageInfo 只允许它在package.json文件中运行: :autocmd FileType json nnoremap N:PackageInfo屏幕截图步骤1:...
包裹信息显示有关已安装的 Android 应用程序包的信息截屏构建依赖浮动动作按钮( ) 材料对话框( )
exeinfope可以判断软件的加壳情况,使用方便,工具简单小巧
04.增加对特殊处理过的PACKAGEINFO的Uint List的显示,设定GetSectionIndexByRVA默认返回值是-1or2 选项在Option->configuration->Preferences->General-> Not Special Program And PACKAGEINFO,No Warn Saving ...
04.增加对特殊处理过的PACKAGEINFO的Uint List的显示,设定GetSectionIndexByRVA默认返回值是-1or2 选项在Option->configuration->Preferences->General-> Not Special Program And PACKAGEINFO,No Warn Saving ...
本文实例讲述了Android编程判断手机上是否安装了某个程序的方法。分享给大家供大家参考,具体如下: ...PackageInfo packageInfo = null; try { packageInfo = this.getPackageManager().getPackageInfo(pk
DEDE反汇编Delphi/BCB,增加对特殊处理过的PACKAGEINFO的Uint List的显示,修复原有Dump Active Process的BUG,修复拖放处理程序时,确认对话框的BUG!
packageInfo = packageManager.getPackageInfo(getPackageName(),0); //得到包的信息 } catch (PackageManager.NameNotFoundException e) { e.printStackTrace(); } versionName = packageInfo.versionName; //版本...
List<PackageInfo> apps = pm.getInstalledPackages(PackageManager.GET_SIGNATURES); Iterator<PackageInfo> iter = apps.iterator(); while(iter.hasNext()) { PackageInfo packageinfo = iter
04.增加对特殊处理过的PACKAGEINFO的Uint List的显示 05.修改原有的"Open With DEDE"的注册键错误&BUG,可以使用右键运行DEDE反汇编Delphi/BCB 06.去处NAG显示 07.修复原有Dump Active Process的BUG 08.Enable Dump...
本文实例讲述了Android编程...PackageInfo packageInfo; try { packageInfo = this.getPackageManager().getPackageInfo( com.twitter.android, 0); } catch (NameNotFoundException e) { packageInfo = null; e.
Android应用检查版本更新后,在通知栏下载,更新下载...PackageInfo packageInfo = context.getPackageManager().getPackageInfo(context.getPackageName(), 0); int localVersion = packageInfo.versionCode; 用当前v