android - Android中如何判断哪个Activity启动了当前的Activity?

标签 android android-intent android-activity

在不使用 Intent 并传递额外参数的情况下,是否可以确定哪个 Activity 启动了当前 Activity?

最佳答案

有两种方法。

  1. 普通的

在调用 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

  1. 已弃用

使用系统的返回栈获取最近的任务。但是它在 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/

相关文章:

java - Android Lunar Lander 线程处理替代方案

Android:onActivityResult 数据始终为空

java - 如何将 currentLocation ActivityOne 传递给 ActivityTwo?

Android Libgdx 应用程序,无法解析 AndroidApplication

java - 将数据从 ViewModel 的 AsyncTask 传递到调用 Activity

java - 共享按钮呈灰色且禁用

android - 为什么我的 Activity 是 logcat ="WIN DEATH Killing ProcessRecord"当我将 sd 卡安装到计算机时

java - Android 中的 Http cookie 存储

Android 5.0 std::clock() 运行速度更快

android - 如何为 Android 13 请求推送通知权限?