【发布时间】:2015-08-24 17:51:38
【问题描述】:
这不是一个重复的问题。我只发现this 问题相关,但没有任何可行的解决方案。
我有什么
我有两个由我创建的应用程序,应用程序 A 和应用程序 B。我的要求是通过单击按钮从应用程序 A 打开应用程序 B。现在App B会做一些处理,返回一个小状态给App A,应该可以吧?
我做了什么
Intent intent = getActivity().getPackageManager().getLaunchIntentForPackage(Config._PACKAGE);
getActivity().startActivityForResult(intent, 6699);
这会完美地打开 App B。现在在 App B 中,
Intent returnIntent = new Intent();
returnIntent.putExtra("STATUS", statusCode);
setResult(RESULT_OK, returnIntent);
finish();
这是我在 Activity 上的 onActivityResult() 方法。不过,我是从 Fragment 开始 Activity。
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
Log.d(TAG, "ON ACTIVITY RESULT");
if (requestCode == 6699) {
if (resultCode == RESULT_OK) {
Log.d(TAG, "RESULT OK");
}
if (resultCode == RESULT_CANCELED) {
Log.d(TAG, "RESULT NOT OK");
}
}
}
问题
当我使用RESULT_CANCELLED. 启动App B 的活动时,onActivityResult() 被调用,这怎么可能?是因为它是一项新任务吗?
但是当我在 App B 上调用 finish() 并且它关闭并将我带回 App A 时,但这次没有调用 onActivityResult()?我该如何解决这个问题?
这是一个非常基本的要求,应该有解决方案。
【问题讨论】:
-
来自the docs:“如果您正在启动的活动使用singleTask启动模式,它将不会在您的任务中运行,因此您将立即收到取消结果”
-
应用 B 中的 Activity 在其 manifest 中没有提到 launchMode。那有什么问题呢?
标签: android android-intent android-activity