2015-04-29 2 views
0

Как передать идентификатор и пароль пользователя gmail в веб-браузер для входа в Gmail?Пропустить идентификатор пользователя и пароль gmail для webView в Android

+0

На самом деле я хочу передать учетные данные в WebView для пользователя системы автоматически –

+0

Ваш вопрос очень неясно. Вы хотите передать пароль пользователя gmail для учетной записи пользователя android, или вы хотите ввести пользователя в систему gmail в своем веб-браузере, а затем получить его идентификатор пользователя и передать его? Если у вас есть намерение собирать данные, имейте в виду, что это незаконно. –

+0

Пользователю необходимо сохранить свои учетные данные, а затем, когда пользователь хочет, чтобы он мог войти в свою нужную учетную запись на основе своих дополнительных учетных данных, я хочу знать, возможно ли это? потому что для сохранения учетных данных и входа в систему требуется одно приложение. Приложение «LoginBox». –

ответ

0

Для Gmail, поскольку gmail прошел https несколько месяцев назад, нет простого способа. WebView не может обрабатывать базовую аутентификацию при использовании HTTPS-соединения.

Не грустите, есть обходное решение. Вы можете использовать функцию loadUrl из WebView:

Bundle extras = getIntent().getExtras();    
    mUsrName = extras != null ? extras.getString("username") : null; 
    mPassC = extras != null ? extras.getString("passcode") : null; 

    mWebView = (WebView) findViewById(R.id.webview); 
    mWebView.getSettings().setJavaScriptEnabled(true); 

    mWebView.setWebViewClient(new WebViewClient() { 
     @Override 
     public void onReceivedHttpAuthRequest(WebView view, 
              HttpAuthHandler handler, 
              String host, 
              String realm){ 
     handler.proceed(mUsrName, mPassC); 
     } 

     public void onReceivedSslError(WebView view, 
            SslErrorHandler handler, 
            SslError error) { 
     handler.proceed() ; 
     } 
    }); 

    String up = mUserName +":" +mPassC; 
    String authEncoded = new String(Base64.encodeBase64(up.getBytes())); 
    String authHeader = "Basic " +authEncoded; 
    Map<String, String> headers = new HashMap<String, String>(); 
    headers.put("Authorization", authHeader); 
    mWebView.loadUrl("https://myhost.com/secured_area", headers); 

любезность: Set credentials on an Android Webview using secured HTTPS connection

1

Я хотел бы добавить, что нагрузка яваскрипта функции должно быть сделано, когда HTML загружен. Для того, чтобы контролировать, что вы можете использовать следующее:

webview.getSettings().setJavaScriptEnabled(true); 
webview.loadUrl("file:///android_asset/test.html"); 

webview.setWebViewClient(new WebViewClient(){ 

    public void onPageFinished(WebView view, String url){ 

     webview.loadUrl("javascript:init('" + theArgumentYouWantToPass + "')"); 
    }   
}); 

test.html

<!DOCTYPE html> 
<html> 
<head> 
    <title>Test</title> 
</head> 

<body> 
hola 
adios 
</body> 

<script type="text/javascript"> 

    function init(val){ 
    // Do whatever you want with your parameter val 
    } 
</script> 
</html>