永远不会调用OnActivityResult

时间:2013-07-31 16:38:10

标签: android onactivityresult

我有两个独立的应用程序。应用程序A和应用程序B.我想从应用程序A开始应用程序B中的活动并返回结果。在应用程序B中,还有一项活动。从B第二次活动开始,我得到了B的第一项活动。现在我希望将这些结果返回给应用程序A.但是从不调用A中的OnActivityResult。以下是代码。

申请表A:

public void onClickBtnToApplicationB(View v) {
        try {
            final Intent intent = new Intent(Intent.ACTION_MAIN, null);
            final ComponentName cn = new ComponentName("pakacagename","package.class");
            intent.setComponent(cn);
            intent.setAction(Intent.ACTION_MAIN);
            intent.addCategory(Intent.CATEGORY_LAUNCHER);
        intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);                 
            startActivityForResult(intent, REQUEST_CODE);
        } catch (ActivityNotFoundException e) {
        //handle Exception
        } 
    }

    public void onActivityResult(int requestCode, int resultCode, Intent intent) {
        switch (requestCode) {
            case REQUEST_CODE:
               handleResult(resultCode, intent);
               break;
        }
    }

    public void handleResult(int resultCode, Intent intentResult) {
        switch (resultCode) {
            case RESULT_OK:
                String Result = intentResult.getStringExtra("RESULT");
                // I need Results from Application B here..
                break;

             case RESULT_CANCELED:
                break;
        }
      }

申请B活动1.class:

Intent s = new Intent(1.this,2.class);
startActivityForResult(s, REQUEST_CODE_B);
protected void onActivityResult(int requestCode, int resultCode, Intent intentResult) {     
    switch(requestCode){
        case REQUEST_CODE_B:
            handleResult(resultCode, intentResult);
    }
}

public void handleResult(int resultCode, Intent intentResult) {
    switch (resultCode) {
    case RESULT_OK:
        String scanResult = intentResult.getStringExtra("RESULT");
        Intent newintent = new Intent();
        newintent.putExtra("RESULT", scanResult);
        setResult(Activity.RESULT_OK, newintent);
        finish();
        break;

    case RESULT_CANCELED:
        break;
}

1 个答案:

答案 0 :(得分:2)

来自documentation

  

请注意,此方法只应与Intent协议一起使用   被定义为返回结果。在其他协议中(例如   ACTION_MAIN或ACTION_VIEW),你可能无法得到结果   期望。例如,如果您要启动的活动使用   singleTask启动模式,它不会在你的任务中运行,因此你会   立即收到取消结果。