【发布时间】:2014-05-10 13:42:51
【问题描述】:
您好,感谢您的关注!
请在我的 android 应用程序中有一个 WebView。
我需要检测 WebView 何时重新加载 URL。
要明确:当用户按下网页上的按钮时,我的 WebView 中包含的网页会重新加载,但 ID 不会更改 URL,
因此shouldOverrideUrlLoading 不会被调用。
如何检测 URL 重新加载???
这是我的代码:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.preappove);
wait = new ProgressDialog(this);
wait.setTitle("Please Wait");
wait.setMessage("Redirecting to PayPal for your approval");
wait.show();
wv = (WebView) findViewById(R.id.webView);
wv.clearCache(true);
wv.clearHistory();
wv.getSettings().setJavaScriptEnabled(true);
wv.getSettings().setJavaScriptCanOpenWindowsAutomatically(true);
wv.getSettings().setLoadWithOverviewMode(true);
wv.getSettings().setUseWideViewPort(true);
perfs = getSharedPreferences("pefs",
PreApprove.this.MODE_MULTI_PROCESS);
sender = perfs.getString("sender", null);
receiver = perfs.getString("receiver", null);
paymentamount = perfs.getString("paymentamount", null);
maxpaymentamount = perfs.getString("maxpaymentamount", null);
paymentnumber = perfs.getString("paymentnumber", null);
// wv.setWebViewClient(new Callback());
wv.getSettings().setBuiltInZoomControls(true);
GetPreappovalKey gpk = new GetPreappovalKey();
try {
gpk.execute().get();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ExecutionException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
wv.setWebViewClient(new WebViewClient() {
public void onPageFinished(WebView view, String url) {
wait.dismiss();
}
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
if (url.contains("www.google.com")) {
Welcome.fa.finish();
Toast.makeText(PreApprove.this, "Setup Completed Successfully!", Toast.LENGTH_LONG).show();
//PreApprove.this.finish();
Payment.pay(PreApprove.this);
}// GOOD APPROVED
if (url.contains("www.yahoo.com")) {
PreApprove.this.finish();
}// BAD CANCELLED
view.loadUrl(url);
return true;
}
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
// NEVER GETS CALLED WHEN PAYPAL RELOADS :-(
}
});
wv.loadUrl("https://www.sandbox.paypal.com/cgi-bin/webscr?cmd=_ap-preapproval&preapprovalkey="
+ preappovalkey);
}
【问题讨论】: