在不使用 Intent 并传递额外参数的情况下,是否可以确定哪个 Activity 启动了当前 Activity?
最佳答案
有两种方法。
- 普通的
在调用 Activity 中使用 startActivityForResult
来启动 Activity 。这里我使用 ActivityCompat
来实现向后兼容性。
ActivityCompat.startActivityForResult(this, new Intent(this, MyActivity.class), 0, null);
然后在callee activity中,可以使用如下代码检测调用activity。
if (getCallingActivity() != null) {
Log.d(TAG, getCallingActivity().getClassName());
}
注意
在调用 Activity 中,如果不需要从被调用 Activity 传输数据,则不必实现 onActivityResult
。
- 已弃用
使用系统的返回栈获取最近的任务。但是它在 API 21 之后就不起作用了,它在 API 21 之后被弃用了。
在 mainifest 中声明必要的权限。
<uses-permission android:name="android.permission.GET_TASKS" />
然后在你的被叫 Activity 中
ActivityManager activityManager = (ActivityManager) getSystemService(ACTIVITY_SERVICE);
for (ActivityManager.RecentTaskInfo taskInfo : activityManager.getRecentTasks(1, 0)) {
Log.d(TAG, taskInfo.baseIntent.getComponent().getClassName());
}
关于android - Android中如何判断哪个Activity启动了当前的Activity?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30677078/