Android等待浏览器意图完成
问题描述:
我正在编写重定向到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");
}
答
浏览器是不太可能有结果返回,因为没有办法来指定此时它应该返回。您应该使用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/");
答
的浏览器不会发送结果。使用startActivityForResult(),ACTION_VIEW和ACTION_MAIN协议无法正常工作。
你应该开始一个web视图,并确定如果用户通过跟踪当前的URL完成。
+0
谢谢,但正如我在另一个答案中所说,我不能使用webview,因为一些隐私政策来自本地安卓市场 –
谢谢....是的,我可以通过这种方式使用WebView。但我有另一个问题,因为当地的Android市场禁止我使用网络视图,他们告诉我,我应该使用外部浏览器...... –
正如我所说,没有办法指定浏览器应考虑交易完成的地方。如果您的支付平台允许您在付款完成后指定要重定向的URL(通常用于网页返回您的网站),您可以指定一个由您的应用处理的URL。这就是说,这将是一个黑客。 –
是的....我认为我们应该使用自定义网址方案 –