判断Activity是否存在
2016-07-28 00:11
387 查看
一、根据包名判断应用是否存在
publicbooleancheckApplication(StringpackageName){
if(packageName==null||"".equals(packageName)){
returnfalse;
}
try{
ApplicationInfoinfo=getPackageManager().getApplicationInfo(packageName,PackageManager.GET_UNINSTALLED_PACKAGES);
returntrue;
}catch(NameNotFoundExceptione){
returnfalse;
}
}
二、判断Activity是否存在
Intentintent=newIntent();
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
}
publicbooleancheckApplication(StringpackageName){
if(packageName==null||"".equals(packageName)){
returnfalse;
}
try{
ApplicationInfoinfo=getPackageManager().getApplicationInfo(packageName,PackageManager.GET_UNINSTALLED_PACKAGES);
returntrue;
}catch(NameNotFoundExceptione){
returnfalse;
}
}
二、判断Activity是否存在
Intentintent=newIntent();
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
}
protectedvoidstartAndExit(){ logi(TAG,"---startAndExit---"); Intentintent=newIntent(this,ActivityMain.class); ComponentNamecmpName=intent.resolveActivity(getPackageManager()); booleanbIsExist=false; if(cmpName!=null){//说明系统中存在这个activity ActivityManageram=(ActivityManager)getSystemService(ACTIVITY_SERVICE); List<RunningTaskInfo>taskInfoList=am.getRunningTasks(10); logi(TAG,"---startAndExit---taskInfoList.size:"+taskInfoList.size()); for(RunningTaskInfotaskInfo: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 protectedvoidonNewIntent(Intentintent){ logi(TAG,"---onNewIntent---"); super.onNewIntent(intent); if(intent.getBooleanExtra("isExit",false)){ finish();//自行关闭 } }
相关文章推荐
- HDU3507-Print Article-斜率dp入门题
- Java的I/O流
- linux下c语言获取当前时间
- 51单片机之外设——74HC138、74HC02、74HC573讲解(二)
- 实习点滴 - 破窗理论、C++ 函数模板静态库
- 数据仓库建模——维度建模
- java数据结构之二叉树
- http协议多线程下载,支持断点续传(后续再完善)
- hdu 1507 Uncle Tom's Inherited Land*(二分图最大匹配,黑白染色)
- hadoop streaming多用户权限问题
- Java中clone的用法
- POJ 3616 D - Milking Time(DP)
- 优先队列--C语言实现与Java例子
- Env:Winmanager插件使用
- MalformedByteSequenceException: Invalid byte 1 of 1-byte
- POJ2187-Beauty Contest-凸包
- ls
- history命令详解和man帮助
- uboot命令
- message from server: "Host '114.111.166.7' is not allowed to connect to this MySQL server"