3

기본 인증을 사용하는 서버로 인증하는 앱을 만들었습니다.Android WebView clear 기본 인증 자격

    사용자는 사용자들이 종료해야 잘못된 자격 증명에 입력하면 프로그램
  • 을 종료하지 않고 로그 아웃 할 수
  • 를 다시 입력 : 이것이 내가이 해결되지 않은 문제를 의미하므로 그러나 나는 자격 증명을 지울 수 없습니다 프로그램

나는 내 자신의 많은 다른 구현을 시도하고 많은이 웹 사이트에서 권장합니다. 나는 freenode에 # android-dev를 사용하지 않고 캠프했습니다. 그래서 이것이 나의 마지막 옵션입니다.

다음은 웹보기 내 예제 코드입니다 (나는 몇 가지 물건을 촬영했지만, 기본 코드는 본질적으로 동일) :

wv = new WebView(getBaseContext()); 
    wv.setWebViewClient(new WebViewClient() { 
     boolean error = false; 
     int count = 0; 
     int checked = 0; 

     @Override 
     public void onReceivedHttpAuthRequest(WebView view, HttpAuthHandler handler, String host, String realm) { 
      count++; 
      if (count >= 3) { 
       Toast.makeText(getBaseContext(), "Login Failed. Please Try Again.", Toast.LENGTH_LONG).show(); 

      } else { 
       handler.proceed(getUser(), getPass()); 
      }// end else 
     }// end onReceivedHttpAuthRequest 


     @Override 
     public void onPageStarted(WebView view, String url, Bitmap favicon) { 

     }// onPageStarted 

     // on success switch activities 
     @Override 
     public void onPageFinished(WebView view, String url) { 

      if (view.getTitle().equalsIgnoreCase("fooTitle")) { 

       // switch activities 
       Intent fooActivity = new Intent(getBaseContext(), fooActivity.class); 
       startActivity(fooActivity); 
      } else { 
       //failed 
      }// end else 
     }// end onPageFinished 
    });// end setWebViewCleint 

    wv.getSettings().setJavaScriptEnabled(true); 
    wv.loadUrl(url); 

나는 그것이 onReceivedHttpAuthRequest를 실행 않습니다 실행 만 처음. 로그 아웃하고 다시 로그인하면 onPageStarted를 실행 한 다음 이전 자격 증명을 사용하여 onPageFinished를 실행합니다. 따라서 로그 아웃하고 새 사용자를 입력하면 원래 사용자와 다시 로그인합니다. 또는 잘못된 사용자 이름과 암호를 입력하면 OnPageStarted에 멈추게됩니다. onReceivedError와 http 오류를 사용해 보았습니다. 아무런 이점도 없었습니다.

다음은 logout() 메서드로 deauth하려고 시도한 코드 중 일부이며 코드의 다른 부분에도 있습니다. 나뿐만 아니라이 다양한 변화를 시도했습니다 다음 ClearCacheFolder는 여기에 게시 markjan 방법을 말한다

wv.clearCache(true); 
    wv.setHttpAuthUsernamePassword(host, realm, "",""); 
    clearCacheFolder(this.getCacheDir()); 
    clearCacheFolder(this.getExternalCacheDir()); 
    this.getBaseContext().deleteDatabase("webview.db"); 
    this.getBaseContext().deleteDatabase("webviewCache.db"); 
    WebViewDatabase.getInstance(getBaseContext()).clearHttpAuthUsernamePassword(); 
    WebViewDatabase.getInstance(getBaseContext()).clearUsernamePassword(); 
    WebViewDatabase.getInstance(getBaseContext()).clearFormData(); 
    WebStorage.getInstance().deleteAllData(); 
    wv.setHttpAuthUsernamePassword(host, realm, 
    username, password); 

: Android Webview - Completely Clear the Cache

답변

1

이 시도 :

CookieSyncManager.createInstance(this); 
    CookieManager cookieManager = CookieManager.getInstance(); 
    cookieManager.removeAllCookie(); 

내가 명 Vkontakte 로그인이 사용 webview에서 저장된 사용자 이름/비밀번호를 삭제하는 활동.

+0

기본 인증에서는 쿠키를 사용하지 않고 있지만 감사합니다. 나는 상관없이 그것을 시도했다. –

0
@Override 
public void onReceivedHttpAuthRequest(WebView view, HttpAuthHandler handler, String host, String realm) { 
    count++; 
    if (count >= 3) { 
    handler.cancel();// after adding this line of code my 
        //problem is solved. Hope it will for you too. 

    Toast.makeText(getBaseContext(), "Login Failed. Please Try Again.", Toast.LENGTH_LONG).show(); 

    } else { 
     handler.proceed(getUser(), getPass()); 
     }// end else 
    }