我需要用任务栈的方式获取到栈顶activity的context对象
时间: 2024-02-12 22:03:03 浏览: 17
你可以使用以下代码来获取栈顶activity的context对象:
```java
ActivityManager activityManager = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);
List<ActivityManager.RunningTaskInfo> runningTasks = activityManager.getRunningTasks(1);
if (runningTasks != null && !runningTasks.isEmpty()) {
ActivityManager.RunningTaskInfo runningTask = runningTasks.get(0);
ComponentName topActivity = runningTask.topActivity;
try {
Context context = createPackageContext(topActivity.getPackageName(), Context.CONTEXT_IGNORE_SECURITY);
// context 就是栈顶 activity 的 context 对象
} catch (PackageManager.NameNotFoundException e) {
e.printStackTrace();
}
}
```
需要注意的是,这种方式需要在 AndroidManifest.xml 中添加 GET_TASKS 权限。另外,由于 Android 5.0 之后,getRunningTasks 方法只能获取到自己应用的 task,因此这种方式在 Android 5.0 及以上的版本可能会失效。