搜索上限和下限均未解决我的问题。因此,我终于要发表求助了。
我有两个应用程序,都由我编写。 App A启动App B,并通过Intent.putExtra()传递参数。当启动App B时,可以很好地传递参数,效果非常好。
但是,我找不到将响应返回给App A的方法。使用startActivityForResult()总是使我立即获得带有RESULT_CANCELED的onActivityResult()。经过进一步检查,logcat给了我一个警告,指出“Activity 正在作为新任务启动,因此取消 Activity 结果”。
我尝试使用不同的启动模式, Action 过滤器(android.intent.action.PICK)来制作App B的Activity,但我没有做任何更改。
我在尝试做不可能的事吗?据我了解,我试图做的事情应该类似于使用第三方 Activity 从设备的图片库中选择图片。
编辑:
好的,我尝试从 Activity B中删除LAUNCHER类别,但是它仍然不起作用。这是我的 Activity :
<activity android:name=".${CLASSNAME}" android:label="@string/app_name" android:configChanges="mcc|mnc|locale|keyboardHidden|orientation" android:launchMode="standard">
<intent-filter>
<action android:name="android.intent.action.PICK" />
</intent-filter>
</activity>
有人真的有这个工作吗?我开始怀疑启动另一个应用程序的 Activity 永远不会返回结果,因为无论您将什么放入“Intent 过滤器”中,它似乎总是会启动一个新任务。
最佳答案
请确保您要启动的Activity在 list 中未设置android:launchMode,并检查是否未使用android:taskAffinity。看这里:
http://developer.android.com/guide/topics/manifest/activity-element.html#aff
确保用于启动 Activity 的Intent上未设置FLAG_ACTIVITY_NEW_TASK。看这里:
http://developer.android.com/reference/android/content/Intent.html#FLAG_ACTIVITY_NEW_TASK
特别注意:“当调用者从正在启动的 Activity 中请求结果时,不能使用此标志。”
如果 Activity 是作为新任务的一部分启动的,那么Android将立即使用RESULT_CANCELED调用onActivityResult(),因为一个任务中的 Activity 无法将结果返回给另一个任务,只有同一任务中的 Activity 才能这样做。
关于android - 如何使外部 Activity 上的startActivityForResult工作?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11919259/