Androidは、あるクラスにタスクスタックがあるかどうかを判断します.
プロジェクトを開発するとき、Activityの起動モードを設定する以外に、このクラスが起動されたかどうかを得る必要があります.あるクラスにタスクスタックがあるかどうかを判断する必要があります.
この場合、次の方法を使用できます.
さらに、
一、パッケージ名によりアプリケーションが存在するか否かを判断する
二、Activityが存在するかどうかを判断する
方法1:
方法2:
方法3:
簡単ではないでしょうか.
この場合、次の方法を使用できます.
/**
*
* @return
*/
private boolean isExsitMianActivity(Class> cls){
Intent intent = new Intent(this, cls);
ComponentName cmpName = intent.resolveActivity(getPackageManager());
boolean flag = false;
if (cmpName != null) { // activity
ActivityManager am = (ActivityManager) getSystemService(ACTIVITY_SERVICE);
List taskInfoList = am.getRunningTasks(10);
for (RunningTaskInfo taskInfo : taskInfoList) {
if (taskInfo.baseActivity.equals(cmpName)) { //
flag = true;
break; // ,
}
}
}
return flag;
}
/**
*
*/
public void dealWithIntent(){
if(isExsitMianActivity(MainActivity.class)){//
//
}else{//
//
}
}
さらに、
一、パッケージ名によりアプリケーションが存在するか否かを判断する
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(" ", " ");
方法1:
if (getPackageManager().resolveActivity(intent, 0) == null) {
// activity
}
方法2:
if(intent.resolveActivity(getPackageManager()) == null) {
// activity
}
方法3:
List list = getPackageManager().queryIntentActivities(intent, 0);
if (list.size() == 0) {
// activity
}
簡単ではないでしょうか.