startactivity(intent)中断Intent.ACTION_SEND

时间:2014-11-04 07:44:07

标签: android android-intent

我正在开发一个应用程序,允许用户通过其他应用程序(whatsapp,facebook等)分享一些信息。一旦我完成共享,我想回到之前的活动。这是我到目前为止所尝试的内容 -

public void ShareSelectedResults()
{
    Intent sharing = new Intent();
    sharing.setAction(Intent.ACTION_SEND);
    String message = MakeMessage(); //compose message, just text
    sharing.putExtra(Intent.EXTRA_TEXT, message);
    sharing.setType("text/plain");
    startActivity(Intent.createChooser(sharing, "Share result with"));
    selected_results.clear();       //static array_list emptied
    //ReturnToScoreBoard();         //return to previous activity
}

public void ReturnToScoreBoard()
{
    Intent intent = new Intent(getApplicationContext(), Scoreboard.class);
    intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
    startActivity(intent);
}

一切正常,即我可以分享我的结果。但是,如果我将注释行ReturnToScoreBoard();添加到代码中,我将返回上一个活动,而不会被允许共享。有没有一种方法可以用来在共享意图完成后返回上一个活动?

提前致谢

2 个答案:

答案 0 :(得分:0)

使用startActivityForResult而不是startActivity,在onActivityResult中,检查请求代码,如果结果成功,则调用方法ReturnToScoreBoard()

答案 1 :(得分:0)

public void ReturnToScoreBoard()
{
    Intent intent = new Intent(getApplicationContext(), Scoreboard.class);
    intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
    startActivityForResult(intent, RESULT_CODE);
}

然后,就像RaviVadera所说的那样。在那个活动句柄中这样:

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
// Check which request we're responding to
if (requestCode == REQUEST_CODE) {
    // Make sure the request was successful
    if (resultCode == RESULT_OK) {
        ReturnToScoreBoard()
    }
}

我想我会详细说明拉维瓦德拉的解释。希望这会有所帮助。