`
kalogen
  • 浏览: 864223 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

安装apk包时怎么判断这个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时,表示获取的应用为系统预装的应用,反之则为手动安装的应用。

大家可以看下代码,说明已经写在注释中。

获取应用的代码:



/**
  * 查询手机内非系统应用
  * @param context
  * @return
  */
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);
   //判断是否为非系统预装的应用程序
   if ((pak.applicationInfo.flags & pak.applicationInfo.FLAG_SYSTEM) <= 0) {
    // customs applications
    apps.add(pak);
   }
  }
  return apps;
}



获取图片、应用名、包名:

                      PackageManager pManager = MessageSendActivity.this.getPackageManager();
                     List<PackageInfo> appList  = Utils.getAllApps(MessageSendActivity.this);
                    
                     for(int i=0;i<appList.size();i++) {
                      PackageInfo pinfo = appList.get(i);
                      ShareItemInfo shareItem = new ShareItemInfo();
                      //set Icon
                      shareItem.setIcon(pManager.getApplicationIcon(pinfo.applicationInfo));
                      //set Application Name
                      shareItem.setLabel(pManager.getApplicationLabel(pinfo.applicationInfo).toString());
                      //set Package Name
                      shareItem.setPackageName(pinfo.applicationInfo.packageName);
                     
                     }



其中 ShareItemInfo 类是我本地自定义的,各位可以忽略!

另为,有人可能在找 分享应用列表,在此一并说下吧。

获取支持分享的应用的代码:

  /**
  * 查询手机内所有支持分享的应用
  * @param context
  * @return
  */
public static List<ResolveInfo> getShareApps(Context context){
     List<ResolveInfo> mApps = new ArrayList<ResolveInfo>();
     Intent intent=new Intent(Intent.ACTION_SEND,null);
     intent.addCategory(Intent.CATEGORY_DEFAULT);
     intent.setType("text/plain");
     PackageManager pManager = context.getPackageManager();
     mApps = pManager.queryIntentActivities(intent,PackageManager.COMPONENT_ENABLED_STATE_DEFAULT);
   
     return mApps;
}

由于该方法,返回的并不是 PackageInfo 对象。而是 ResolveInfo。因此获取图片、应用名、包名的方法不一样,如下:

                      PackageManager pManager = MessageSendActivity.this.getPackageManager();
                    
                     /*********************查询手机内所有支持分享的应用*********************/
                     List<ResolveInfo> resolveList  = Utils.getShareApps(MessageSendActivity.this);
                    
                     for(int i=0;i<resolveList.size();i++) {
                      ResolveInfo resolve = resolveList.get(i);
                      ShareItemInfo shareItem = new ShareItemInfo();
                      //set Icon
                      shareItem.setIcon(resolve.loadIcon(pManager));
                      //set Application Name
                      shareItem.setLabel(resolve.loadLabel(pManager).toString());
                      //set Package Name
                      shareItem.setPackageName(resolve.activityInfo.packageName);
                     
                     }

总结:

通过 PackageInfo  获取具体信息方法:


包名获取方法:packageInfo.packageName

icon获取获取方法:packageManager.getApplicationIcon(applicationInfo)

应用名称获取方法:packageManager.getApplicationLabel(applicationInfo)

使用权限获取方法:packageManager.getPackageInfo(packageName,PackageManager.GET_PERMISSIONS)

.requestedPermissions


通过 ResolveInfo 获取具体信息方法:


包名获取方法:resolve.activityInfo.packageName

icon获取获取方法:resolve.loadIcon(packageManager)

应用名称获取方法:resolve.loadLabel(packageManager).toString()
分享到:
评论

相关推荐

    1个apk安装另一个apk,安装多个apk

    安装多个apk,apk打包,一个apk安装多个apk,由于这个在网上太难找了,找到的也是有错误,没办法,尝试了很久终于出结果了,分享给大家吧,分要多点。

    unity调用安卓安装apk文件(支持安卓9)

    unity调用安卓方法实现apk文件的安装。亲测支持安卓7,8,9。附有安卓源码在MyApplication目录下面。请用unity2018.2.13以上版本打开。直接在unity打包安卓即可测试。如果出现打包失败的报错可能是你把项目解压到了...

    APK打包解包工具

    APK打包解包工具,这个是手机版本,完全可以完美打包以安装apk

    多台手机批量安装apk

    把要安装的apk放入一个文件夹,选中这个文件夹,插上电脑,就自动安装,只要你有多少个U口,就能同时安装多少台手机。 我500台note2,半小时装好了。哈哈。 若你会修改原厂rom,可以给我发邮件,我想把apk打包到rom里...

    demo.apk unity自动更新 内部安装Apk

    unity 内部更新Apk 自动安装 支持安卓8.0 以上 demo.apk 测试包

    安卓网apk安装器3.0

    1)使用安装助手安装APK文件时,手机必须开启USB调试模式,具体方法:进行手机“设置”菜单,再进入“应用程序”项,再进入“开发”项,然后再选中“USB调试”开启USB调试。 2)请确认你电脑已经安装好手机驱动,如果...

    如何在Android模拟器上安装和卸载APK包.chm

    如何在Android模拟器上安装和卸载APK包

    易语言apk查看器源码分享 [超级强大]安卓apk包名和类名查看器 专业查看APK的工具 apk包名查看

    [超级强大]安卓apk包名和类名查看器 专业查看APK的工具 apk包名查看 这个软件非常的牛逼可以直接查看全部未知的APK 易语言apk查看器源码分享

    apk简易安装器

    目前PC端安装APK都需要在手机上安装一个守护端,守护端不但容易泄露个人隐私,而且还占用手机内存空间,监控手机用户行为信息等。为了方便大家绿色、方便、放心使用电脑安装APK,特意写了APK简易安装工具: 【功能...

    为Deepin/UOS上的UEngine安卓运行环境安装自定义APK软件包,并能发送安装的APK包启动菜单到桌面或系统菜单

    可以在应用商店安装部分官方已适配的安卓应用,对爱好者来说,不能自己安装APK软件包始终差点意思,本程序可以为Deepin/UOS上的Uengine安卓运行环境安装/卸载/打包自定义APK软件包,并能发送安装的APK包启动菜单到...

    安卓APK包自动安装软件

    很多时候我们并不希望由360手机助手,91手机助手这些软件在我们的手机上安装一个市场后才能安装软件,所以我做了这个软件,这其实是一个bat脚本,用脚本转exe程序生成了exe文件,并且附加了图标,还有安装apk文件所...

    安卓apk.1安装器v1.9 可直接在微信安装apk文件.txt打包整理.zip

    安卓apk.1安装器v1.9 可直接在微信安装apk文件.txt打包整理.zip

    Android 下载安装apk

    downloadmanager 下载安装apk包

    将Py项目打包成apk.txt

    这个文件写的是将Python的py文件打包为APK文件,APK文件为Android的安装包 这个文件写的是将Python的py文件打包为APK文件,APK文件为Android的安装包 这个文件写的是将Python的py文件打包为APK文件,APK文件为...

    使用adb命令批处理安装卸载apk

    使用adb命令批处理安装卸载apk ...这里使用的方法是:先用winrar从apk文件中提取出AndroidManifest.xml文件,然后用AXMLPrinter2.jar 把AndroidManifest.xml文件转换成标准的xml文本,然后从这个xml文本中读取出包名。

    Gradle编译打包Android apk详细介绍

    APK包是一个ZIP压缩包,从Java源代码、资源文件到生成这个APK,经过了编译打包一系列特定的过程,SDK文档(/docs/tools/building/index.html)中找到。而这一系列特定的过程,重复繁琐,构建工具(build tool)就是...

    查看apk包名

    直接查看apk包名

    APK打包解包

    Adb pull 提取文件,签名 apk (如果是系统 apk,不适用),Zipalign apk (apk必须是已经创建并签名),压缩(Zip) apk,安装 apk (系统 apk 不适用, 使用 adb push),压缩(Zip) / 签名 / 安装 apk (一步操作),Adb push ...

    HTML打包APK最新1.9.0

    HTML一键打包APK工具Windows版本,可以在Windows平台打包安卓应用APK,支持打包网址和本地静态网页项目,同时支持设置图标,启动图,签名,滑动等多种能, 并可以防止误报毒.

    Android手机安装apk程序助手

    因为目前多数手机自带的电脑连接套件都不能直接安装apk程序到手机中,所以手机乐园官方为广大的Android手机用户开发了一款小巧简单的apk软件安装助手,只要您在电脑上安装好了手机驱动,使用手机乐园APK安装助手可以...

Global site tag (gtag.js) - Google Analytics