android - 判断 android activity 是否被打开 "for result"

标签 android android-intent android-activity bundle

在某些情况下,我希望我的 Activity ( Activity A)setResult,而其他时候我希望我的 Activity startActivity 并在调用完成时发送带有一些参数的 Intent 本身。

我可以通过使用一些 bundle 参数启动此 Activity A 来解决这个问题,如果该参数存在,则 setResult else startActivity 但现在我很好奇是否有首先检查其启动方式的 Intent

有没有办法确定我的 Activity A 是否是为了结果而启动的?

最佳答案

调用 getCallingActivity() 将返回使用 startActivityForResult(...) 调用您的 Activity 的 Activity 。如果 getCallingActivity() 为空,您可以假设您的 Activity 正常启动(没有预期结果)

getCallingActivity documentation

例如

ComponentName callingComponent = getCallingActivity();

if (callingComponent == null) // result not expected
{
    Intent intent = new Intent(this, ActivityB.class);
    // set your intent extras here
    startActivity(intent);
} else { //result expected
    Intent intent = new Intent();
    // set your intent extras here
    setResult(RESULT_OK, intent);
    finish();
}

关于android - 判断 android activity 是否被打开 "for result",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18320978/

相关文章:

java - 如何通过在名称中添加 int 来从 strings.xml 获取字符串

java - std::strtoull 在我的 JNI NDK 环境下无法识别

Android:以编程方式播放相机快门声音

java - 从 MySql 表中获取的 Android 应用程序数据

android - 最佳实践 Activity -在android中切换和更改 View

android - 在单个布局中多次重用布局时,像访问另一个 View 一样访问 View

java - 安卓 : resuming an app after an opening notification push

android - 使用singleTask时如何处理每个Intent

Android:两个 Activity ,一个选项卡

android - Facebook SDK 与 Android Studio 集成