我现在在片段中有以下代码。
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_login, container, false);
if (mWebView != null) {
mWebView.destroy();
mWebView = null;
}
mWebView = (WebView) view.findViewById(R.id.web_view);
mWebView.loadUrl("http://10.0.2.2:8000/login");
mIsWebViewAvailable = true;
mWebView.getSettings().setJavaScriptEnabled(true);
mWebView.addJavascriptInterface(new WebViewJavaScriptInterface(getActivity()), "AndroidAppCallBack");
mWebView.setWebViewClient(new LoginWebViewClient());
return view;
}
public class WebViewJavaScriptInterface {
Context mContext;
public WebViewJavaScriptInterface(Context context) {
mContext = context;
}
@JavascriptInterface
public void handleResponse(String response) {
Intent intent = new Intent(mContext, MockService.class);
startActivity(intent);
//mContext.startService(intent);
}
}
private class LoginWebViewClient extends WebViewClient {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
if (Uri.parse(url).getPath().contains("myapp")) {
return false;
}
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
startActivity(intent);
return true;
}
}
在本机应用中,我点击一个按钮,要求用户登录才能访问它。因此,它将启动WebView,工作正常。用户成功进行身份验证,并使用按钮在成功页面上结束。当我点击这个按钮时,它应该使用我创建的接口调用流中的下一个类,但它没有。
这是我用来回调接口的JavaScript代码
<input type="button" value="Logged in" onClick="processResponse('Success')" />
<script type="text/javascript">
function processResponse(response) {
AndroidAppCallBack.handleResponse(response);
}
</script>
除此之外,我调用的网页 - http://10.0.2.2/login在加载为WebView时不会加载任何CSS / JS。有什么我需要打开来加载所有资源?该网页完全不受我的控制。