Архив метки: webview

Читаем печеньки (coockies) из webview, android

Прочитать cookies на открытой странице в webview можно например так:

public String CookieExtract (String cooks,String coocksname){
        String CookieValue = null;
        if (cooks!=null) {
            Log.v("Form1", "Все куки:"+cooks);
            Log.v("Form1", "Ищем:"+coocksname);
            String[] temp = cooks.split(";");
            for (String ar1 : temp) {
                if (ar1.contains(coocksname)) {
                    String[] temp1 = ar1.split("=");
                    CookieValue = temp1[1];
                    break;
                }
            }
        } else {
            Log.v("Form1", "Куков пока нет...");
        };
        return CookieValue;
    };
    @Override
    public void onPageFinished(WebView view, String url){
        user_randomid_w3=CookieExtract(CookieManager.getInstance().getCookie(url),"user_randomid_w3");
        Log.v("Form1", "Прочитали куки:"+user_randomid_w3);
        mbrowser.setVisibility(View.VISIBLE);
        spiner.setVisibility(View.INVISIBLE);
        super.onPageFinished(view, url);

    }

Запрос выбора SSL сертификата в компоненте WebView

Задача: при открытии страницы https необходимо позволить пользователю выбрать необходимый сертификат ssl из установленых в хранилище.

Решение:

private class NocWebViewClient extends WebViewClient {
    @Override
    public void onReceivedClientCertRequest(WebView view, final ClientCertRequest request) {
        Log.v(getClass().getSimpleName(), "===> certificate required!");

        KeyChain.choosePrivateKeyAlias(Form1.this, new KeyChainAliasCallback(){
            @TargetApi(Build.VERSION_CODES.LOLLIPOP)
            @Override
            public void alias(String alias) {
                Log.v(getClass().getSimpleName(), "===>Key alias is: " + alias);
                try {
                    PrivateKey changPrivateKey = KeyChain.getPrivateKey(Form1.this, alias);
                    X509Certificate[] certificates = KeyChain.getCertificateChain(Form1.this, alias);
                    Log.v(getClass().getSimpleName(), "===>Getting Private Key Success!" );
                    request.proceed(changPrivateKey, certificates);
                } catch (KeyChainException e) {
                    Log.e(getClass().getSimpleName(), Util.printException(e));
                } catch (InterruptedException e) {
                    Log.e(getClass().getSimpleName(), Util.printException(e));
                }
            }
        },new String[]{"RSA"}, null, null, -1, null);
    }
    @Override
    public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) {
        handler.proceed();
    }

    @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url)
    {
        return true;
    }
    @Override
    public void onPageFinished(WebView view, String url){

    }