Facebook Intent.ACTION_SEND 始终返回 0 作为 resultCode

3

我正在尝试使用我的应用程序在Facebook上分享照片,并启动Intent.ACTION_SEND。我的代码如下:

File file = new File(imagePath);
Intent sharingIntent = new Intent(Intent.ACTION_SEND);
sharingIntent.setType(MimeTypeUtils.getMimeType(imagePath));
sharingIntent.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(file));
sharingIntent.setPackage("com.facebook.katana");
baseFragment.startActivityForResult(sharingIntent, Values.REQUEST_CODE_FACEBOOK_SHARE);

我可以顺利进行分享,但是无论我取消操作还是成功完成,结果总是返回0(零)。因为需要接收结果来记录我的分享情况,所以必须调用startActivityForResult方法。以下是处理结果代码:

public void onActivityResult(int requestCode, int resultCode, Intent data) {
   case Values.REQUEST_CODE_FACEBOOK_SHARE:
     if (resultCode == Activity.RESULT_OK){
        //Save a new record
     }
     else {
        //Do nothing
     }
   break;
}

应用程序从未进入if子句,因为结果代码始终为0。我不知道发生了什么。我认为实现的机制是预期的。有什么建议吗?
1个回答

8
我必须调用startActivityForResult,因为我需要接收一个结果来记录我的股份。
文档所述,ACTION_SEND并不是用来返回结果的(输出:没有)。很少有应用程序会返回结果,那些技术上不应该返回结果的应用也只有很少。

@TiagoPereira:正确。 - CommonsWare
@TiagoPereira:你可以得出结论,Dropbox、Google+和Twitter的开发人员非常慷慨,对于这些应用程序的当前版本以及您执行的特定流程。没有要求ACTION_SEND处理活动调用setResult()来给您一个结果代码,并且没有要求您获得的结果值一定与您认为表示“取消”与“执行”的任何内容相匹配。 - CommonsWare
非常感谢。您知道是否存在任何替代方法来执行与ACTION_SEND相同的操作并获得有关结果的反馈吗? - Tiago Pereira
@TiagoPereira,我也遇到了同样的问题,你解决了吗? - 1'hafs
@hara,我无法解决这些问题,所以我不得不改变我的应用程序的行为。我不知道在我处理iOS的这些日子里,新的Android版本是否已经实现了这一点。 - Tiago Pereira
显示剩余3条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接