2017-12-27 248 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

是的....我认为我们应该使用自定义网址方案 –