Android 判断包名应用是否正在运行,如果正在运行,就置顶,如果不在运行就打开
时间: 2024-01-04 10:02:15 浏览: 88
可以通过 ActivityManager 的 getRunningTasks() 方法获取任务栈信息,判断栈顶的任务是否属于目标应用,来判断目标应用是否正在运行。如果目标应用正在运行,则通过 Intent.FLAG_ACTIVITY_REORDER_TO_FRONT 标志将其置顶;如果目标应用未运行,则通过 Intent.FLAG_ACTIVITY_NEW_TASK 标志打开它。下面是一个示例代码:
```
public void openOrTopApp(Context context, String packageName) {
ActivityManager activityManager = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
List<ActivityManager.RunningTaskInfo> runningTasks = activityManager.getRunningTasks(1);
if (runningTasks != null && !runningTasks.isEmpty()) {
ActivityManager.RunningTaskInfo taskInfo = runningTasks.get(0);
ComponentName componentName = taskInfo.topActivity;
if (componentName.getPackageName().equals(packageName)) {
// 目标应用正在运行,将其置顶
Intent intent = new Intent(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_LAUNCHER);
intent.setComponent(componentName);
intent.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
context.startActivity(intent);
} else {
// 目标应用未运行,打开它
Intent intent = context.getPackageManager().getLaunchIntentForPackage(packageName);
if (intent != null) {
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(intent);
}
}
}
}
```
其中,Context 是应用的上下文,packageName 是目标应用的包名。函数通过 ActivityManager.getRunningTasks() 获取当前栈顶的任务信息,然后判断其包名是否与目标应用一致。如果一致,说明目标应用正在运行,将其置顶;如果不一致,说明目标应用未运行,打开它。
阅读全文