2017-12-27 242 views
1

我正在編寫重定向到URL(我的服務器)的付款方式並保存一些信息,然後轉到銀行頁面以獲得付款價格。但有問題Android等待瀏覽器意圖完成

我想等待瀏覽器意圖完成/取消付款過程。但完成立即後開始意圖,我不能檢查與startActivityForResult()onActivityResult()
我剛剛在startActivityForResult()之後調用了一個結果。

Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(******)); 
startActivityForResult(intent, 100); 

. 
. 
. 

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data)     
{ 
    super.onActivityResult(requestCode, resultCode, data); 
    if(requestCode == 100) 
     Log.w("web", "finish"); 
} 

回答

1

瀏覽器是不太可能有結果返回,因爲沒有辦法來指定此時它應該返回。您應該使用WebView,並檢測您認爲完成或取消點的特定URL。

你需要實現一個WebViewClient,並以檢測導航到一個特定的URL,像這樣覆蓋public boolean shouldOverrideUrlLoading (WebView view, String url)

class MyWebViewClient : WebViewClient { 

    @Override 
    public boolean shouldOverrideUrlLoading (WebView view, String url) { 
     if (url.equals(FINISH_URL)) { 
      // Finished, we return true to handle navigation ourselves 
      return true; 
     } 

     // Keep navigating 
     return false; 
    } 
} 

在你WebView你需要調用setWebViewClient()

WebView webview = findViewById(R.id.webview); 
webview.getSettings().setJavaScriptEnabled(true); 
webview.setWebViewClient(new MyWebViewClient()); 
webview.loadUrl("https://yourpaymenturl.com/"); 
+0

謝謝....是的,我可以通過這種方式使用WebView。但我有另一個問題,因爲當地的Android市場禁止我使用網絡視圖,他們告訴我,我應該使用外部瀏覽器...... –

+1

正如我所說,沒有辦法指定瀏覽器應考慮交易完成的地方。如果您的支付平臺允許您在付款完成後指定要重定向的URL(通常用於網頁返回您的網站),您可以指定一個由您的應用處理的URL。這就是說,這將是一個黑客。 –

+0

是的....我認爲我們應該使用自定義網址方案 –