是的,可以通过JavascriptInterface重定向到新页面。
首先,创建一个新的类,实现JavascriptInterface接口,如下所示:
public class WebViewJavaScriptInterface {
private Context mContext;
public WebViewJavaScriptInterface(Context context) {
mContext = context;
}
@JavascriptInterface
public void redirectToNewPage(String url) {
// 在这里处理重定向到新页面的逻辑
Intent intent = new Intent(mContext, NewPageActivity.class);
intent.putExtra("url", url);
mContext.startActivity(intent);
}
}
然后,在WebView的设置中启用JavaScript,并将JavascriptInterface添加到WebView中,如下所示:
public class MainActivity extends AppCompatActivity {
private WebView mWebView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 初始化WebView
mWebView = findViewById(R.id.webview);
mWebView.getSettings().setJavaScriptEnabled(true);
// 添加JavascriptInterface
mWebView.addJavascriptInterface(new WebViewJavaScriptInterface(this), "Android");
// 设置WebViewClient
mWebView.setWebViewClient(new WebViewClient() {
@Override
public void onPageFinished(WebView view, String url) {
// WebView加载完成后调用JavaScript代码进行重定向
view.loadUrl("javascript:window.Android.redirectToNewPage(window.location.href);");
}
});
// 加载网页
mWebView.loadUrl("http://example.com");
}
}
在上述代码中,当WebView加载完成后,会调用onPageFinished方法。在该方法中,通过调用WebView的loadUrl方法执行JavaScript代码,该代码会调用JavascriptInterface中的redirectToNewPage方法,并将当前页面的URL作为参数传递给该方法。然后,可以在redirectToNewPage方法中处理重定向逻辑,比如启动一个新的Activity来显示新页面。
请注意,为了确保在Android 4.2及以上版本中正常工作,redirectToNewPage方法上必须添加@JavascriptInterface注解。
上一篇:Android WebView的onConsoleMessage错误:捕获到SyntaxError:无效或意外的令牌。
下一篇:Android WebView的setMediaPlaybackRequiresUserGesture(false)只能在第一次生效。