本地应用程序到WebView并在登录后返回

时间:2015-07-07 00:50:16

标签: android webview native

我现在在片段中有以下代码。

@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。有什么我需要打开来加载所有资源?该网页完全不受我的控制。

0 个答案:

没有答案