2017-02-13 154 views
0

我有一个Android应用程序A和android应用B. 我想打电话从应用程序A应用程序B和应用B得到一些数据,并返回到相同的应用程序A这是之前打开的。调用另一个另一个应用程序然后回到同一个应用程序之前打开

应用程序A

Intent app = new Intent(Intent.CATEGORY_LAUNCHER); 
app.setComponent(new ComponentName("com.abc.applicationA","com.abc.applicationA.MainActivity")); 
startActivity(applicationA); 

应用B

Intent j = new Intent(Intent.CATEGORY_LAUNCHER); 
j.setComponent(new ComponentName("com.abc.applicationB","com.abc.applicationB.MainActivity")); 
j.putStringArrayListExtra("Data", data); //data is array list 
startActivity(j); 

但对于上述实施applicationA推出applicationB然后再当applicationB推出applicationA一旦更多的时间applciationA是launched.so当我回到我将会有第二次调用的applicationA,然后第一次调用applicationB和applicationA。

我的本意是applicationA启动,然后进入applicationB得到一些数据,然后回来之前launcehed相同applicationA。

+0

如何使用AIDL服务 –

+1

'startActivityForResult' –

回答

0

板球说,startActivityForResult是这里的正确答案。在活动A,通过调用活动B. startActivityForResult然后,当您在活动B完成您打开活动B,你会调用setResult功能,然后finish()

+0

我能够从applicationA穿越到应用程序B,并取回applicationA没有得到applicationA叫了两声,但我也想访问applicationA在applicationB对此我不能做它。 – RShenoy

+0

我不明白你的意思是“我也想访问applicationB中的applicationA”。我对你的问题的解释是,你想要这个... –

+0

从App中的Activity A开始,在App B中开始Activity B作为结果。当您在应用程序B的活动B中完成时,setResult,然后调用finish(),它应该返回到应用程序A中的活动A并获得所需的结果。 –

0

在ApplicationA,

尝试使用startActivityForResult代替startActivity

int REQUEST_CODE = *any Integer as request code* 
Intent app = new Intent(Intent.CATEGORY_LAUNCHER); 
app.setComponent(new ComponentName("com.abc.applicationB","com.abc.applicationB.MainActivity")); 
startActivityForResult(applicationA,REQUEST_CODE); 

而且覆盖onActivityResult

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 
    if (requestCode == REQUEST_CODE) { 
     //check the resultCode and data would contain the extras 
    } 
} 

在ApplicationB,使用setResult()方法。

+0

我想这应该改变'app.setComponent(新组件名称(“com.abc.applicationB”,“com.abc.applicationB.MainActivity”));' – RShenoy

+0

我能够从applicationA穿越到应用程序B,并取回applicationA没有得到applicationA被调用两次,但我也想访问应用程序B中的applicationA,我无法做到这一点。 – RShenoy

相关问题