2017-02-13 142 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

相關問題