-1

Any reason why neither onProgressChanged nor onPageFinished is being triggered?

My webview does not have any errors (as seen in inspect of google chrome) My code in webview activity is:

I saw this answer but since am new to android coding cannot figure out if I am doing the same mistake.

Can someone please help in rectifying my code.

Thanks in advance

private WebView mWebView;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    TwitterAuthConfig authConfig = new TwitterAuthConfig(TWITTER_KEY, TWITTER_SECRET);
    Fabric.with(this, new TwitterCore(authConfig), new Digits());
    setContentView(R.layout.activity_main);

    mWebView = (WebView) findViewById(R.id.activity_main_webview);
    mWebView.setWebViewClient(new WebViewClient());
    mWebView.setWebChromeClient(new WebChromeClient());
    WebSettings webSettings = mWebView.getSettings();
    webSettings.setJavaScriptEnabled(true);
    mWebView.addJavascriptInterface(this, "Android");
    mWebView.loadUrl("file:///android_asset/index.html");

}
public void onProgressChanged(WebView view, int progress){//not working
    if(progress==100) {
        SharedPreferences settings = getApplicationContext().getSharedPreferences(PREFS_NAME, 0);
        String userPhone = settings.getString("userPhone", "null");
        Long userId = settings.getLong("userId", 0);
        String retVal = userPhone + "$" + userId;
        mWebView.loadUrl("javascript:displayUser('" + retVal + "')");
    }
}
public void onPageFinished(WebView view, String url){//not workin
        SharedPreferences settings = getApplicationContext().getSharedPreferences(PREFS_NAME, 0);
        String userPhone = settings.getString("userPhone", "null");
        Long userId = settings.getLong("userId", 0);
        String retVal = userPhone + "$" + userId;
        mWebView.loadUrl("javascript:displayUser('" + retVal + "')");
}
Community
  • 1
  • 1
user1517108
  • 2,395
  • 6
  • 32
  • 43
  • Why *should* they be working? You're not telling the `WebView` about these methods. They ought to be part of the `WebChromeClient`. – 323go Jan 07 '16 at 20:40
  • Thanks.... got it... replying to my question just in case theres some other noob out there. – user1517108 Jan 07 '16 at 20:49

1 Answers1

0

Thanks to @323go, heres the answer (tho i just wish my quest wasnt downvoted :) )

onProgressChanged and onPageFinished need to be part of WebChromeClient. Modified code:

private WebView mWebView;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    TwitterAuthConfig authConfig = new TwitterAuthConfig(TWITTER_KEY, TWITTER_SECRET);
    Fabric.with(this, new TwitterCore(authConfig), new Digits());
    setContentView(R.layout.activity_main);

    mWebView = (WebView) findViewById(R.id.activity_main_webview);
    mWebView.setWebViewClient(new WebViewClient());
    mWebView.setWebChromeClient(new WebChromeClient() {
        public void onProgressChanged(WebView view, int progress){//not working
            if(progress==100) {
                SharedPreferences settings = getApplicationContext().getSharedPreferences(PREFS_NAME, 0);
                String userPhone = settings.getString("userPhone", "null");
                Long userId = settings.getLong("userId", 0);
                String retVal = userPhone + "$" + userId;
                mWebView.loadUrl("javascript:displayUser('" + retVal + "')");
            }
        }
        public void onPageFinished(WebView view, String url){//not workin
            SharedPreferences settings = getApplicationContext().getSharedPreferences(PREFS_NAME, 0);
            String userPhone = settings.getString("userPhone", "null");
            Long userId = settings.getLong("userId", 0);
            String retVal = userPhone + "$" + userId;
            mWebView.loadUrl("javascript:displayUser('" + retVal + "')");
        }
    });
    WebSettings webSettings = mWebView.getSettings();
    webSettings.setJavaScriptEnabled(true);
    mWebView.addJavascriptInterface(this, "Android");
    mWebView.loadUrl("file:///android_asset/index.html");

}
user1517108
  • 2,395
  • 6
  • 32
  • 43
  • :) actually it wasnt a typo... I seriously thot that 'onCreate' should have same hierarchy as 'onPageFinished'. – user1517108 Jan 08 '16 at 09:30
  • 1
    `onProgressChanged` and `onPageFinished` aren't part of `WebChromeClient` but yes of `WebViewClient` – leotesta Jun 23 '19 at 11:32