一、判断应用是否存在
方法一:

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

adb shell pm list package

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

$ adb shell pm list packagepackage:com.google.android.carriersetuppackage:com.sangfor..client.awork.stdpackage:com.github.spackage:com.android.cts.priv.ctsshimpackage:com.google.android.youtubepackage:com.vzw.apnlibpackage:com.android.internal.display.cutout.emulation.cornerpackage:com.google.android.ext.servicespackage:com.android.internal.display.cutout.emulation.doublepackage:com.google.android.overlay.pixelconfig2017package:com.android.providers.telephonypackage:com.android.dynsystempackage:com.android.sdm.plugins.connmopackage:com.google.android.googlequicksearchboxpackage:com.android.providers.calendarpackage:com.android.providers.mediapackage:com.google.android.apps.docs.editors.docspackage:com.android.theme.icon.squarepackage:com.google.android.onetimeinitializerpackage:com.google.android.ext.sharedpackage:com.android.internal.systemui.navbar.gestural_wide_backpackage:com.qualcomm.ltebc_vzwpackage:com.quicinc.cne.CNEServicepackage:com.android.theme.color.cinnamonpackage:com.htc.omadm.triggerpackage:com.google.euiccpixelpackage:com.android.theme.icon_pack.rounded.systemuipackage:com.android.externalstoragepackage:com.google.android.apps.enterprise.dmagentpackage:com.android.htmlviewerpackage:com.qualcomm.qti.uceShimServicepackage:com.android.companiondevicemanagerpackage:com.verizon.obdm_permissionspackage:com.android.mms.servicepackage:com.android.providers.downloadspackage:com.sangfor..demopackage:com.google.android.apps.messagingpackage:com.google.android.soundpickerpackage:com.android.theme.icon_pack.rounded.androidpackage:com.sangfor.securereaderpackage:com.sangfor.example.sfauthdemopackage:com.sunrisedutyfree.apps.sunrisememberspackage:android.autoinstalls.config.google.nexuspackage:com.example.android.jniclientpackage:com.qualcomm.qti.telephonyservicepackage:com.android.theme.icon_pack.circular.themepickerpackage:great.com.testpackage:com.google.android.configupdaterpackage:com.google.android.vr.inputmethodpackage:com.google.pixel.wahoo.gfxdrvpackage:com.infraware.office.link.chinapackage:com.google.android.overlay.googlewebviewpackage:com.google.android.apps.safetyhubpackage:com.google.ar.corepackage:com.android.providers.downloads.uipackage:com.android.vendingpackage:com.android.pacprocessorpackage:com.android.simappdialogpackage:com.android.internal.display.cutout.emulation.tallpackage:com.android.certinstallerpackage:com.android.theme.color.blackpackage:com.google.android.marvin.talkbackpackage:com.android.theme.color.greenpackage:com.android.theme.color.oceanpackage:com.android.theme.color.spacepackage:com.android.internal.systemui.navbar.threebuttonpackage:com.google.android.apps.work.oobconfigpackage:com.qti.qualcomm.datastatusnotificationpackage:androidpackage:com.android.hotwordenrollment.xgooglepackage:com.google.android.pixel.setupwizardpackage:com.sangfor..client.phonepackage:com.android.theme.icon_pack.rounded.launcherpackage:com.google.android.imaging.easel.servicepackage:com.sangfor.example.android10namespacepackage:com.android.eggpackage:com.android.mtppackage:com.android.nfcpackage:com.android.onspackage:com.android.stkpackage:com.android.launcher3package:com.android.backupconfirmpackage:com.google.android.deskclockpackage:com.android.internal.systemui.navbar.twobuttonpackage:org.codeaurora.imspackage:com.android.statementservicepackage:com.beichen.fakelinkerpackage:com.android.hotspot2package:com.google.android.aspackage:com.google.android.gmpackage:com.google.android.carrierpackage:com.google.android.apps.tachyonpackage:com.yozo.officepackage:com.android.sdm.plugins.sprintdmpackage:com.jybank.mobile.jynsbankpackage:com.sangfor.ssl.safeapppackage:com.google.android.vr.homepackage:com.android.internal.systemui.navbar.gestural_extra_wide_backpackage:com.google.android.permissioncontrollerpackage:com.google.intelligence.sensepackage:com.google.android.setupwizardpackage:com.qualcomm.qcrilmsgtunnelpackage:com.android.providers.settingspackage:com.android.sharedstoragebackuppackage:com.verizon.servicespackage:com.google.android.anglepackage:com.google.android.euiccpackage:com.google.android.musicpackage:com.android.printspoolerpackage:com.android.hotwordenrollment.okgooglepackage:com.android.sdm.plugins.diagmonpackage:com.android.theme.icon_pack.filled.settingspackage:com.android.dreams.basicpackage:com.android.sepackage:com.android.inputdevicespackage:com.google.android.apps.wellbeingpackage:com.estrongs.android.poppackage:com.google.android.dialerpackage:com.android.bips

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

$ adb shell pm list package|grep applicapackage: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 list = getPackageManager().queryIntentActivities(intent, 0);        if (list.size() == 0) {            // 说明系统中不存在这个activity        }

参考自:

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


 

更多相关文章

  1. Android之Service组件
  2. Android(安卓)Parcel和Parcelable类
  3. android 判断手机为小米
  4. Android设置Dialog透明度、黑暗度方法
  5. RecyclerView 中 item 点击事件的优化
  6. android获取各种路径的方法
  7. Android设置透明效果的三种方法
  8. Android使用SimpleAdapter
  9. Android(安卓)如何通过menu id来得到menu item 控件--binbinyang

随机推荐

  1. Android横屏竖屏切换的问题
  2. Android(安卓)handler异步更新
  3. Android的状态栏通知(Notification)
  4. Android实现左侧滑动菜单
  5. Android中实现Launcher功能之一 ----- 添
  6. ANDROID轻量级JSON序列化和反序列化
  7. android之动画通过AnimationDrawable控制
  8. Android常用框架混淆代码
  9. Android(安卓)开发第二弹:通讯录
  10. Talking about Android(安卓)process