【发布时间】:2017-01-24 02:01:23
【问题描述】:
它的一些实现,以及看似一些设备,似乎永远不会返回等于 -1 的 RESULT_OK,而只是返回一个误导性的 0,同时在 Intent extras 中包含所有必要的数据
我已经看到很多 Google 示例代码不再对 resultCode 执行条件,但是他们可以在不破坏任何内容的情况下弃用它,因为 Google 倾向于弃用完全非功能性的方法,因为他们更喜欢他们的新名称,他们可能会重载一个新的 onActivityResult,从而根本没有将 resultCode 作为方法参数。
我想知道是否有技术解释或博客文章说明该特定消息传递协议似乎只是失败了,文档中没有任何更新说“嘿也许 不要 依赖在 resultCode 上遵循任何押韵或理由"
【问题讨论】:
-
为什么 0 具有误导性?是
RESULT_CANCELED -
"它的一些实现,以及看似一些设备,似乎永远不会返回等于 -1 的 RESULT_OK,而只是返回一个误导性的 0" - 大概,您启动的应用程序没有调用 @ 987654322@,或用
RESULT_CANCELED拨打setResult()。你有任何相反的证据吗? “我已经看到很多 Google 示例代码根本不再对 resultCode 执行条件” - 链接,或者它没有发生。 :-) -
@CommonsWare 最好的例子(不是我今天遇到的那个)是我已经看到相机和画廊意图按预期运行并且仍然返回结果被取消,但仍然有一个 URI 并正确创建文件以及请求继续所需的所有内容,同时仍设置 requestCode 已取消
-
如果“相机...意图”是指
ACTION_IMAGE_CAPTURE,相机应用程序不应返回Uri。除此之外,假设您指的是ACTION_IMAGE_CAPTURE和ACTION_GET_CONTENT之类的东西,“相机和图库意图”由应用程序处理,无论是由设备制造商、第三方还是谷歌提供。其中一些应用程序可能存在错误这一事实并不表示onActivityResult()存在错误。
标签: android deprecated onactivityresult startactivityforresult