判断应用或Activity是否存在

2023-10-29

一、判断应用是否存在


方法一:

通过usb连接的方式 使用adb命令查看已安装的文件列表

adb shell pm list package

然后通过查看列表里是否含有对应的应用名来判断是否安装某应用,列表如下:

$ adb shell pm list package
package:com.google.android.carriersetup
package:com.sangfor.vpn.client.awork.std
package:com.github.shadowsocks
package:com.android.cts.priv.ctsshim
package:com.google.android.youtube
package:com.vzw.apnlib
package:com.android.internal.display.cutout.emulation.corner
package:com.google.android.ext.services
package:com.android.internal.display.cutout.emulation.double
package:com.google.android.overlay.pixelconfig2017
package:com.android.providers.telephony
package:com.android.dynsystem
package:com.android.sdm.plugins.connmo
package:com.google.android.googlequicksearchbox
package:com.android.providers.calendar
package:com.android.providers.media
package:com.google.android.apps.docs.editors.docs
package:com.android.theme.icon.square
package:com.google.android.onetimeinitializer
package:com.google.android.ext.shared
package:com.android.internal.systemui.navbar.gestural_wide_back
package:com.qualcomm.ltebc_vzw
package:com.quicinc.cne.CNEService
package:com.android.theme.color.cinnamon
package:com.htc.omadm.trigger
package:com.google.euiccpixel
package:com.android.theme.icon_pack.rounded.systemui
package:com.android.externalstorage
package:com.google.android.apps.enterprise.dmagent
package:com.android.htmlviewer
package:com.qualcomm.qti.uceShimService
package:com.android.companiondevicemanager
package:com.verizon.obdm_permissions
package:com.android.mms.service
package:com.android.providers.downloads
package:com.sangfor.vpn.vpndemo
package:com.google.android.apps.messaging
package:com.google.android.soundpicker
package:com.android.theme.icon_pack.rounded.android
package:com.sangfor.securereader
package:com.sangfor.example.sfauthdemo
package:com.sunrisedutyfree.apps.sunrisemembers
package:android.autoinstalls.config.google.nexus
package:com.example.android.jniclient
package:com.qualcomm.qti.telephonyservice
package:com.android.theme.icon_pack.circular.themepicker
package:great.com.test
package:com.google.android.configupdater
package:com.google.android.vr.inputmethod
package:com.google.pixel.wahoo.gfxdrv
package:com.infraware.office.link.china
package:com.google.android.overlay.googlewebview
package:com.google.android.apps.safetyhub
package:com.google.ar.core
package:com.android.providers.downloads.ui
package:com.android.vending
package:com.android.pacprocessor
package:com.android.simappdialog
package:com.android.internal.display.cutout.emulation.tall
package:com.android.certinstaller
package:com.android.theme.color.black
package:com.google.android.marvin.talkback
package:com.android.theme.color.green
package:com.android.theme.color.ocean
package:com.android.theme.color.space
package:com.android.internal.systemui.navbar.threebutton
package:com.google.android.apps.work.oobconfig
package:com.qti.qualcomm.datastatusnotification
package:android
package:com.android.hotwordenrollment.xgoogle
package:com.google.android.pixel.setupwizard
package:com.sangfor.vpn.client.phone
package:com.android.theme.icon_pack.rounded.launcher
package:com.google.android.imaging.easel.service
package:com.sangfor.example.android10namespace
package:com.android.egg
package:com.android.mtp
package:com.android.nfc
package:com.android.ons
package:com.android.stk
package:com.android.launcher3
package:com.android.backupconfirm
package:com.google.android.deskclock
package:com.android.internal.systemui.navbar.twobutton
package:org.codeaurora.ims
package:com.android.statementservice
package:com.beichen.fakelinker
package:com.android.hotspot2
package:com.google.android.as
package:com.google.android.gm
package:com.google.android.carrier
package:com.google.android.apps.tachyon
package:com.yozo.office
package:com.android.sdm.plugins.sprintdm
package:com.jybank.mobile.jynsbank
package:com.sangfor.ssl.safeapp
package:com.google.android.vr.home
package:com.android.internal.systemui.navbar.gestural_extra_wide_back
package:com.google.android.permissioncontroller
package:com.google.intelligence.sense
package:com.google.android.setupwizard
package:com.qualcomm.qcrilmsgtunnel
package:com.android.providers.settings
package:com.android.sharedstoragebackup
package:com.verizon.services
package:com.google.android.angle
package:com.google.android.euicc
package:com.google.android.music
package:com.android.printspooler
package:com.android.hotwordenrollment.okgoogle
package:com.android.sdm.plugins.diagmon
package:com.android.theme.icon_pack.filled.settings
package:com.android.dreams.basic
package:com.android.se
package:com.android.inputdevices
package:com.google.android.apps.wellbeing
package:com.estrongs.android.pop
package:com.google.android.dialer
package:com.android.bips

加入管道个grep命令快速寻找想要的应用包名(如下):

$ adb shell pm list package|grep applica
package:com.example.myapplication1

方法二:

    public boolean checkApplication(String packageName) {
        if (TextUtils.isEmpty(packageName)) {
            return false;
        }

        try {
            ApplicationInfo info = getPackageManager().getApplicationInfo(packageName, PackageManager.GET_UNINSTALLED_PACKAGES);
            return true;
        } catch (PackageManager.NameNotFoundException e) {
            e.printStackTrace();
            return false;
        }
    }

方法三:

通过PackageManager判断是否存在该包的程序

    private boolean isApkInstalled(String packageName) {
        PackageInfo packageInfo = null;
        try {
            packageInfo = this.getPackageManager().getPackageInfo(packageName, 0);
        } catch (NameNotFoundException e) {
            packageInfo = null;
            e.printStackTrace();
        }
        return packageInfo != null;
    }

方法四:

此方法既可以判断应用又能获取某应用的入口activity,对于一般有界面的应用来说,如果没有获取到他对应的入口activity,那么我们也可以认为他没有安装(没有入口activity的应用除外)

        Intent resIntent = this.getPackageManager().getLaunchIntentForPackage("包名");
        if (resIntent == null) {
            //该情况下,既找不到指定包的入口activity
        }


二、判断Activity是否存在

 Intent intent = new Intent();
  intent.setClassName("包名", "类名");

方法一:

if (getPackageManager().resolveActivity(intent, 0) == null) {  

       // 说明系统中不存在这个activity
  }

方法二:

 if(intent.resolveActivity(getPackageManager()) == null) {  

       // 说明系统中不存在这个activity
  }

方法三:

List<ResolveInfo> list = getPackageManager().queryIntentActivities(intent, 0);
        if (list.size() == 0) {
            // 说明系统中不存在这个activity
        }

参考自:

https://www.cnblogs.com/devcjq/articles/7688202.html


 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

判断应用或Activity是否存在 的相关文章

随机推荐

  • 使用null,not in翻车了(oracle)

    水平有限 如有错误 请多指正 由于对null和not in理解得不是很透彻 导致在生产环境出问题了 请看下面的sql 为了简单 sql做过调整 select sd prestpword pres from ci pres pres wher
  • 全球第二大成人网站,黄了!

    推荐大家关注一个公众号 点击上方 编程技术圈 关注 星标或置顶一起成长 后台回复 大礼包 有惊喜礼包 每日英文 To give up is easy But to hold it together when everyone else th
  • 历届试题 高僧斗法  (博弈)

    题目 历届试题 高僧斗法 时间限制 1 0s 内存限制 256 0MB 锦囊1 博弈论 NIM取子游戏 锦囊2 将两个两个看成一组 他们之间的间隔可以看成一个NIM取子游戏 问题描述 古时丧葬活动中经常请高僧做法事 仪式结束后 有时会有 高
  • tomcat加载jar包顺序

    概述 项目使用springMVC serviceImpl注入的一个bean无法找到 究其原因是无法找到日志类 其实在spring的配置文件中配置了bean 而且程序代码在其他人的机子上运行不报错 我这边抱错 类找不到apache commo
  • 华为手机如何固定横屏_华为手机屏幕如何转为横屏?很简单,只需这样设置

    设置华为手机横屏显示 需要打开手机的 自动旋转 功能 在使用时将手机机身横置即可 以华为P20Pro为例 详细操作步骤如下 1 从屏幕顶部向下滑动 调出系统的通知面板 2 向下拖拽通知面板 让面板显示全部快捷功能 3 在通知面板中 找到并打
  • SQLyog快捷键,这一篇就够!!

    我们在使用SQLyog进操作时 如果不使用快捷键 会很麻烦 尤其是多行注释这种骚操作 所以在非常忙碌的工作中 使劲的挤了挤 挤出点时间 来整理一下sqlyog的常用快捷键骚操作 一 连接 Ctrl M 创建一个新的连接 Ctrl N 使用当
  • C# 参数传递(引用类型参数)

    目录 一 引言 二 引用类型参数作为值参数传递 三 引用类型参数作为引用参数传递 一 引言 方法中参数的传递方式主要有值参数传递和引用参数传递 ref out 而参数有可以分为值类型参数和引用类型参数 这里主要讲一讲引用类型参数的值 引用参
  • STM32F407IG单片机读写SD2405ALPI实时时钟程序(包括:读时钟时间、写时间到时钟、时间报警中断、倒计时中断)

    具体的IIC时序图和分析过程请参见下面网友的文章 https blog csdn net ybhuangfugui article details 52151835 本人在STM32F407单片机上亲测读时钟 写时钟 时间中断以及倒计时 秒
  • 简述RecyclerView的fling过程

    我们以RecyclerView为例 研究一下ListView是怎么滑动并且更新view的 首先可以肯定的是以Choreographer为基础实现的 一 fling过程研究 fling动作是由input事件触发的 1 1 RecyclerVi
  • 如何用Idea调试Maven插件

    调试端 maven插件源码端 被调试端 maven项目端 使用maven插件构建 和调试普通程序一样 只是调试命令有区别 过程原理如下 注 原理图片摘自https www cnblogs com turn2i p 11823884 html
  • vue实现一个展开和关闭的动画效果

    前言 用 vue animation 来实现一个展开与关闭的效果 效果图 组件逻辑 1 核心是通过改动他的宽度来实现展开 收缩的效果 2 点击展开 分两步 先用动画显示一个展开的效果 再用定时器来让他的效果保存在最后一帧 3 点击收缩 逻辑
  • 泽众TestOne自动化测试平台,挡板测试(Mock测试)上线了!!

    什么是挡板测试 Mock测试 主要应对与某些不容易构造或者不容易获取的对象以及暂时没有开发完成的对象 设计一个虚拟的对象 配置测试需求的业务数据 完成测试业务 TestOne是泽众软件自主研发的一体化测试系统 基于B S 体系结构 集自动化
  • Redis详解(二)——Redis基本操作

    今天继续给大家介绍Redis的相关知识 本文主要内容是Redis的基本操作 本文旨在为大家介绍Redis的基本操作 属于Redis入门级的介绍 如果想要进一步了解Redis的使用操作 推荐以下网站 https www runoob com
  • 魔改 vue-quill-editor字体及字号

  • Android Studio在vivo手机上调试apk出现解析包出错

    在Android studio开发过程中出现解析包时出现问题 用的是vivo y73 Android 8 1的手机 今年刚新出的手机 在开发的时候一直用着是6 0的系统 突然用到8 1的系统进行适配 发现各种报错 还有一个是手机处理器也是一
  • Android中Acition和Category常量表

    Action Action常量 对应字符串 简单说明 ACTION MAIN android intent action MAIN 应用程序入口 ACTION VIEW android intent action VIEW 显示指定数据 A
  • 基础算法:高精度加法

    高精度加法 代码模拟加法过程 1 lt 整数长度 lt 10 5 长整数的加法 int类型的最大值大概 2 1e9 10位长度 include
  • 【Anaconda】安装软件包时Solving environment卡住很长时间

    多数情况下的原因 安装该库需要考虑各软件包的兼容性 可能导致的无法安装的情况 可能解决方法 方法一 创建一个新的 python 环境 只安装代码中需要的库 conda create n name python version conda a
  • Matlab:筛选满足指定条件的数组元素

    Matlab 筛选满足指定条件的数组元素 在Matlab中 我们可以使用一些函数来筛选满足特定条件的数组元素 这些函数包括 find logical 和 indexing 等 下面以一个简单的实例来说明如何查找符合条件的数组元素 假设有一个
  • 判断应用或Activity是否存在

    一 判断应用是否存在 方法一 通过usb连接的方式 使用adb命令查看已安装的文件列表 adb shell pm list package 然后通过查看列表里是否含有对应的应用名来判断是否安装某应用 列表如下 adb shell pm li