FiXiT
FiXiT

Reputation: 829

Web View did not load in API Level 19(KITKAT)

I am using webView in Android and tries to check in Android with API Level greater than or equal to 19.My code works fine for API level greater than 19 but the WebView did not open in API LEVEL 19.Can someone please check this out. Here is the code:

    public boolean loadingFinished = true;//is loading finished
public boolean redirect = false;// redirect to page
 /**
 * {@inheritDoc}
 */
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    View rootView = inflater.inflate(R.layout.web_view, container, false);
    mWebView = (WebView) rootView.findViewById(R.id.webView);
    //initializing views
    backButton = (BUtton) rootView.findViewById(R.id.web_view_back_button);
    titleTextView = (TextView) rootView.findViewById(R.id.web_view_textView);
    progressBar = (ProgressBar) rootView.findViewById(R.id.web_view_progress_bar);
    backButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            getActivity().onBackPressed();
        }
    });
    mWebView.setVisibility(View.GONE);//Visible the view after full loaded
    mWebView.setInitialScale(1);
    mWebView.getSettings().setJavaScriptEnabled(true);
    mWebView.getSettings().setLoadWithOverviewMode(true);
    mWebView.getSettings().setUseWideViewPort(true);
    mWebView.setScrollBarStyle(WebView.SCROLLBARS_OUTSIDE_OVERLAY);
    mWebView.setScrollbarFadingEnabled(false);
    //check for network connection if not available show error msg!!!
    if (!NetworkService.getConnectivityInfo().isConnected(getContext())) {
        progressBar.setVisibility(View.GONE);
        Toast.makeText(getContext(), getContext().getString(R.string.no_network_msg), Toast.LENGTH_SHORT).show();
    } else {
        mWebView.loadUrl("https://www.google.co.in");
    }
    progressBar.setVisibility(View.VISIBLE);
    mWebView.setWebViewClient(new WebViewClient() {

        /**
         * {@inheritDoc}
         */
        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String urlNewString) {
            if (!loadingFinished) {
                redirect = true;
            }

            loadingFinished = false;
            view.loadUrl(urlNewString);
            return true;
        }

        /**
         * {@inheritDoc}
         */
        @Override
        public void onPageStarted(WebView view, String url, Bitmap favicon) {
            loadingFinished = false;
        }

        /**
         * {@inheritDoc}
         */
        @Override
        public void onPageFinished(WebView view, String url) {
            if (!redirect) {
                loadingFinished = true;
            }

            if (loadingFinished && !redirect) {
                progressBar.setVisibility(View.GONE);
                //After page is loaded then whole web-view is visible
                mWebView.setVisibility(View.VISIBLE);
            } else {
                redirect = false;
            }

        }
    });

    return rootView;
}

Upvotes: 2

Views: 2016

Answers (2)

FiXiT
FiXiT

Reputation: 829

In API Level 19 function setInitialScale(int scaleInPercent) does not work.Thats why the code is running well on API Level greater than 19. After removing mWebView.setInitialScale(1); from my code, it works well in API level 19 also.

Upvotes: 1

Fiil
Fiil

Reputation: 1740

There was a WebView engine change in API 19. http://developer.android.com/guide/webapps/migrating.html

Upvotes: 0

Related Questions