`
yxwang0615
  • 浏览: 552745 次
  • 性别: Icon_minigender_1
  • 来自: 青岛
社区版块
存档分类
最新评论

PackageInfo笔记[网络整理]

 
阅读更多

 

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;
}

 

 

 

分享到:
评论

相关推荐

    获取App签名信息

    博文附件,通过PackageInfo获取App签名信息

    android获取未安装APK文件的图标

    android获取未安装APK文件的图标 android开发技巧整理

    Android中获取apk安装包信息的方法

    一、获取安装包信息 代码如下:/** * 获取apk包的信息:版本号,名称,图标等 * @param absPath apk包的绝对路径 * ... PackageInfo pkgInfo = pm.getPackageArchiveInfo(absPath,PackageManager.GET_ACTIVITIES); if

    Android实现整理PackageManager获取所有安装程序信息

    本文实例讲述了Android实现整理PackageManager获取所有安装程序信息的方法。分享给大家供大家参考,具体如下: List&lt;PackageInfo&gt; packs = getPackageManager().getInstalledPackages(0);//获取安装程序的包名 for ...

    PackageManager实例

    PackageManager实例,内容包含ApplicationInfo、PackageInfo、ResolveInfo、ActivityInfo的实例

    基于Android的动态获取权限应用设计与实现1(源码)

    packageInfo = getPackageManager().getPackageInfo(getPackageName(), PackageManager.GET_PERMISSIONS); ActivityCompat.requestPermissions(this, requestPermissions, 1); 一:网络权限 二:蓝牙权限 三:...

    android PackageManager 反射调用相关的类

    Android PackageManager 有很多方法是没有暴漏出来的,我们如果想调用的话需要用Java反射。android_dependency.jar 提供了反射调用相关的class定义,直接放到你的工程libs目录下面,然后就可以进行反射调用...

    Android流量统计

    if ("android.permission.INTERNET".equals(permission)){ //找到应用程序里面又网络权限 TrifficInfo trifficInfo=new TrifficInfo(); trifficInfo.setPackname(info.packageName); trifficInfo.setAppname...

    npm-package-info:简单的vim插件,用于在package.json文件中显示npm软件包信息

    映射示例要将&lt;leader&gt;N映射到:PackageInfo请将以下内容添加到您的.vimrc文件中: :nnoremap N:PackageInfo 只允许它在package.json文件中运行: :autocmd FileType json nnoremap N:PackageInfo屏幕截图步骤1:...

    package-info:显示有关已安装的 Android 应用程序包的信息

    包裹信息显示有关已安装的 Android 应用程序包的信息截屏构建依赖浮动动作按钮( ) 材料对话框( )

    exeinfope查壳

    exeinfope可以判断软件的加壳情况,使用方便,工具简单小巧

    DeDe_3.10_1527.rar

    04.增加对特殊处理过的PACKAGEINFO的Uint List的显示,设定GetSectionIndexByRVA默认返回值是-1or2 选项在Option-&gt;configuration-&gt;Preferences-&gt;General-&gt; Not Special Program And PACKAGEINFO,No Warn Saving ...

    DeDeDark.rar

    04.增加对特殊处理过的PACKAGEINFO的Uint List的显示,设定GetSectionIndexByRVA默认返回值是-1or2 选项在Option-&gt;configuration-&gt;Preferences-&gt;General-&gt; Not Special Program And PACKAGEINFO,No Warn Saving ...

    Android编程判断手机上是否安装了某个程序的方法

    本文实例讲述了Android编程判断手机上是否安装了某个程序的方法。分享给大家供大家参考,具体如下: ...PackageInfo packageInfo = null; try { packageInfo = this.getPackageManager().getPackageInfo(pk

    DeDe反编译工具 DEDE 3.50.4的修改版

    DEDE反汇编Delphi/BCB,增加对特殊处理过的PACKAGEINFO的Uint List的显示,修复原有Dump Active Process的BUG,修复拖放处理程序时,确认对话框的BUG!

    xmljava系统源码-MobileSafe:一个手机安全管家app

    packageInfo = packageManager.getPackageInfo(getPackageName(),0); //得到包的信息 } catch (PackageManager.NameNotFoundException e) { e.printStackTrace(); } versionName = packageInfo.versionName; //版本...

    Android获取apk程序签名信息代码示例

     List&lt;PackageInfo&gt; apps = pm.getInstalledPackages(PackageManager.GET_SIGNATURES); Iterator&lt;PackageInfo&gt; iter = apps.iterator(); while(iter.hasNext()) { PackageInfo packageinfo = iter

    DeDe3.50.04 Fix加强版

    04.增加对特殊处理过的PACKAGEINFO的Uint List的显示 05.修改原有的"Open With DEDE"的注册键错误&BUG,可以使用右键运行DEDE反汇编Delphi/BCB 06.去处NAG显示 07.修复原有Dump Active Process的BUG 08.Enable Dump...

    Android编程判断应用程序是否已安装的方法

    本文实例讲述了Android编程...PackageInfo packageInfo; try { packageInfo = this.getPackageManager().getPackageInfo( com.twitter.android, 0); } catch (NameNotFoundException e) { packageInfo = null; e.

    Android程序版本更新之通知栏更新下载安装

    Android应用检查版本更新后,在通知栏下载,更新下载...PackageInfo packageInfo = context.getPackageManager().getPackageInfo(context.getPackageName(), 0); int localVersion = packageInfo.versionCode; 用当前v

Global site tag (gtag.js) - Google Analytics