推断当前Activity是最后一个Activity:
在Activity的方法中, 有一个方法isTaskRoot()方法, 这种方法能够推断当前Activity是否是最后一个Activity, 假设是, 用户再按一次返回键就退出应用, 否则回到上一个仍然活动的Activity;
代码例如以下:
@Override
public void onBackPressed() {
if (isTaskRoot()) {
Toast.makeText(mContext, "当前activity是该应用唯一,一个存活的activity", 0).show();
}else {
Toast.makeText(mContext, "当前activity不是是该应用唯一,存活的activity", 0).show();
}
super.onBackPressed();
}
推断应用或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
}