2013-07-31 178 views
0

我有两个独立的应用程序。应用程序A和应用程序B.我想从应用程序A开始应用程序B中的活动并获得结果。在应用程序B中还有一个活动。从B第二项活动中,我得到了B的第一项活动。现在我想将这些结果返回给应用程序A.但是,A中的OnActivityResult永远不会被调用。以下是代码。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; 
} 
+0

应用程序B是否也是您的应用程序? –

+0

@Hoan Nguyen Yup – Shah

回答

2

documentation

注意,此方法应只意图协议一起使用的是定义了 以返回结果。在其他协议(如 ACTION_MAIN或ACTION_VIEW)中,当您期望 时可能不会得到结果。例如,如果您正在启动的活动使用 singleTask启动模式,它将不会在您的任务中运行,因此您将立即收到取消结果 。

+0

感谢您的回答。但我是android的新手。在这种情况下可能的解决方案是什么。我如何集成两个应用程序。或换句话说,我如何调用独立应用程序并从该应用程序获取结果。你的帮助将不胜感激。 – Shah

+0

根据文档,似乎避免singleTask启动模式并重命名意向操作将消除此问题。如果你看看OpenIntents(可用的源代码),你可以看到他们是如何解决它的。 – 323go

+0

我现在使用动作名称来调用应用程序B,但我不知道如何获得结果。我无法理解Openintents。应用程序onActivityResult仍未被调用。 – Shah

相关问题