判断Activity是否存在

一、根据包名判断应用是否存在

public boolean checkApplication(String packageName) {

  if (packageName == null || "".equals(packageName)){

      return false;

  }

  try {

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

}


二、判断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
  }

 

    protected void startAndExit() {  
        logi(TAG, "---startAndExit---");  
        Intent intent = new Intent(this, ActivityMain.class);  
        ComponentName cmpName = intent.resolveActivity(getPackageManager());  
        boolean bIsExist = false;  
        if (cmpName != null) { // 说明系统中存在这个activity  
            ActivityManager am = (ActivityManager) getSystemService(ACTIVITY_SERVICE);  
            List<RunningTaskInfo> taskInfoList = am.getRunningTasks(10);  
            logi(TAG, "---startAndExit---taskInfoList.size:" + taskInfoList.size());  
            for (RunningTaskInfo taskInfo : taskInfoList) {  
                LogUtils.logi(TAG, "---startAndExit---taskInfo:"  
                        + taskInfo.baseActivity);  
                if (taskInfo.baseActivity.equals(cmpName)) { // 说明它已经启动了  
                    bIsExist = true;  
                    break;  
                }  
            }  
        }  
        logi(TAG, "---onStartAndExit---bIsExist:" + bIsExist);  
        if (bIsExist) {  
            intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);  
            intent.putExtra("isExit", (Boolean) true); //让它自行关闭  
            this.startActivity(intent);  
        }  
    }  



 
   
如果某个Activity的运行模式被设置为singleTask或singleInstance,再次启动它,会触发它的onNewIntent方法。
 
   

@Override
protected void onNewIntent(Intent intent) { logi(TAG, "---onNewIntent---"); super.onNewIntent(intent); if (intent.getBooleanExtra("isExit", false)) { finish(); // 自行关闭 } }
 
  

 

 

 

转载于:https://www.cnblogs.com/maliu/p/5713201.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值