2

我有兩個應用程序separate.Client和賣方應用程序。我想支付客戶端應用程序的錢,並獲得對賣家應用程序的響應。 無論如何,我已經在賣家應用中啓用了深度鏈接概念。 客戶端應用程序: 它有三個活動頁面內部客戶端app.getting細節(第一個活動頁面)和顯示確認(第二個活動)和付款是第三個活動。 注意:使用賣家應用程序的開放客戶端應用程序,填寫客戶端應用程序的所有詳細信息和付款,並將響應發送給賣家應用程序。 該客戶端我已經爲這個集的代碼:如何使用seResult或startActivityForResult從外部應用程序活動獲取數據onActivityResult

Intent object = new Intent(); 
object.putExtra("data", "3434434343343"); 
setResult(Activity.RESULT_OK, object); 
finish(); 

爲賣方應用代碼:

protected void onActivityResult(int ResCode, int ReqRes, Intent data) { 

super.onActivityResult(ResCode, ReqRes, data); 

if (ResCode == 1 && ReqRes == Activity.RESULT_OK && data != null) { 

String response = data.getStringExtra("data"); 

} 
} 

問題這裏:從成功地通過數據客戶端側使用setResult.then,賣方應用活動成功也調用onActivityResult,但是,Intent數據只是作爲NULL來傳遞。因爲,這裏客戶端只使用了多個活動,所以傳遞的結果就是我的問題。 如果有人從多個鏈式鏈接活動(外部應用程序活動)中獲取onActivityResult,那麼它對我很有用。

注意:我找到了一個解決方案,如果兩個應用程序有一個單一的活動意味着,它正確的setresult和OnactivityResult正在調用和獲取data.But,我的方案,如果爲多個鏈客戶端應用程序的活動。

請幫助解決這個問題。 感謝高級

+0

拉梅問題:你有沒有嘗試隨後讀'onActivityResult()'的數據,然後將其設置爲'的setResult()'在鏈連接的活動? – Shaishav

+0

我想要將第三方活動的回覆返回給賣方應用,無論如何,我只爲第三方活動提供setResult。在這裏,我不想從客戶端應用程序中的連鎖活動傳遞數據。我只想將響應數據發送給賣家App onActivityResult。 – harikrishnan

+0

所以,讓我知道如果我得到這個權利。賣方應用程序之後是用戶導航到第三個活動的客戶端應用程序,在該應用程序中,她生成要發送給賣方應用程序的數據(可能通過'setResult()') – Shaishav

回答

1

根據您上面的使用案例,我相信如果客戶端應用程序使用基於Fragment的設置,則允許進行此類通信的更好架構。在這裏,您可以從賣方應用程序開始客戶端活動,讓用戶在那裏導航到不同的片段,然後儘可能使用setResult()。因爲這是一對一的活動結果設置行爲,所以應該起作用。

另一項建議,你可以嘗試,因爲你不想去的片段的方法是客戶端應用程序中,當用戶旅行到不同的活動,你可以立即撥打finish()在其中,然後在最後一個活動通話setResult() 。這可能不起作用,但是,我的一小部分人可能會說:)。

+0

感謝您的回覆。對於第一個建議,我想將我的整體應用程序活動代碼更改爲片段代碼。它對我來說是巨大的變化。但是,會認爲這是最後一種方式。 – harikrishnan

+0

第二個,我已經嘗試過,在第三個活動中,我設置了setResult()。當返回到賣方應用程序,它調用onActivityResult()成功,但是,意圖數據變得空了即將..這個方法沒有解決.. – harikrishnan

+0

是的,我想這可能無法正常工作:(。 – Shaishav

-1

您可以從ThirdActivity導航到FirstActivity,然後返回到您的FirstActivityonNewIntent方法中的賣家應用。

完成這三個過程後,您的客戶端應用程序應具有以下堆棧。

FirstActivity -> SecondActivity -> ThirdActivity 

而你的ThirdActivity位於堆棧的頂部。您ThirdActivity可以使用下面的代碼

Intent toFirstIntent = new Intent(this, FirstActivity.class); 
toFirstIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
toFirstIntent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP); 
startActivity(toFirstIntent); 
finish(); 

然後在你的FirstActivity導航到FirstActivity,您可以設置數據並返回賣家的應用。

@Override 
protected void onNewIntent(Intent intent) { 
    super.onNewIntent(intent); 
    Intent data = new Intent(); 
    data.putExtra("data", "12345678"); 
    setResult(RESULT_OK, data); 
    finish(); 
} 
相關問題