2017-01-04 28 views
5

Android webview uygulamasında ölü bir döngü var, uygulama onReceivedHttpAuthRequest işlevinde engelleniyor. Faaliyet günüWebView - onReceivedHttpAuthRequest hiçbir zaman durmuyor

mWeb.setWebViewClient(new WebViewClient() { 
    @Override 
    public void onPageFinished(WebView view, String url) { 
     mProgressBar.setVisibility(View.GONE); 
    } 

    @Override 
    public void onReceivedHttpAuthRequest(WebView view,HttpAuthHandler handler, String host, String realm) { 
      if (isAdded()) 
       handler.proceed(getResources().getString(R.string.username), getResources().getString(R.string.pass)); 
    } 

    @Override 
    public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) { 
     handler.proceed(); 
    } 
}); 
mWeb.loadUrl(mUrl); 
+0

neyi 'handler.proceed (GetResources(). GetString (R.string.username), GetResources(). GetString (R.string.pass))? –

cevap

0



    mWebView.LoadUrl(url); 
    await Task.Delay(10000);        
    if (!mWebView.IsShown | cliente.ErroReportado) 
    { 
     Toast t = Toast.MakeText(Android.App.Application.Context, "Erro ao acessar o servidor, verifique conexão, usuário e senha e tente novamente!", ToastLength.Long); 
     t.SetGravity(GravityFlags.Center, 0, 0); 
     t.Show(); 
     OnCreate(null); 
    } 
    } 

WebViewClient On

class ViewClient : WebViewClient { MainActivity _activity; public int iTentativasLogin { get; private set; } public bool ErroReportado { get; private set; } public ViewClient(MainActivity activity) { _activity = activity; } public override void OnReceivedHttpAuthRequest(WebView view, HttpAuthHandler handler, string host, string realm) { Toast t ; if (Usuario.Length == 0 | Senha.Length == 0) { t = Toast.MakeText(Android.App.Application.Context, "Usuário ou senha não preenchidos", ToastLength.Long); t.SetGravity(GravityFlags.Center, 0, 0); t.Show(); handler.Cancel(); ErroReportado = true; } else { iTentativasLogin++; if (iTentativasLogin < 4) { handler.Proceed(Usuario, Senha); } else { t = Toast.MakeText(Android.App.Application.Context, "Usuário ou senha incorretos", ToastLength.Long); t.SetGravity(GravityFlags.Center, 0, 0); t.Show(); handler.Cancel(); ErroReportado = true; } } } }