Saltar al contenido

Cómo configurar cookies en el cliente Android WebView

Hola usuario de nuestra página web, hemos encontrado la respuesta a tu interrogante, has scroll y la obtendrás más abajo.

Solución:

Ohh, después de varias horas, finalmente lo descubrí para que funcionara. En primer lugar, CookieSyncManager está obsoleto en la versión posterior de Android desde api 21 según doc. Así que decidió no usarlo más. En segundo lugar, CookieManager se utiliza para almacenar cookies para WebView.

Código definitivo

    CookieManager cookieManager = CookieManager.getInstance();
    cookieManager.setAcceptCookie(true);

    List cookies = WSHelper.cookieStore.getCookies();

    cookieManager.removeAllCookie();

    if (cookies != null) 
        for (Cookie cookie : cookies) 
            if (cookie.getName().contains("session"))
                String cookieString = cookie.getName() + "=" + cookie.getValue() + "; Domain=" + cookie.getDomain();
                cookieManager.setCookie(cookie.getDomain(), cookieString);
                Log.d("CookieUrl",cookieString + " ");
            
        
    
    webView.loadUrl(url);

El key cambios a la solución es: uso cookie.getDomain() en lugar de dominio explícito.

cookieManager.setCookie(cookie.getDomain(), cookieString);

Pruebe este código, después de algunos cambios funciona para mí:

public class WebViewActivity extends Activity
    private SharedPreferences mPreferences;

    String token="";
    @Override
    public void onCreate(Bundle savedInstanceState) 
        super.onCreate(savedInstanceState);
        setContentView(R.layout.webviewpage);

        mPreferences = getSharedPreferences("CurrentUser", MODE_PRIVATE);

    

    public void LaunchWebView(View view) 

        WebView myWebView = (WebView) findViewById(R.id.myWebView);
        myWebView.getSettings().setJavaScriptEnabled(true);
        myWebView.getSettings().setSaveFormData(false);

        CookieSyncManager.createInstance(this);
        CookieSyncManager.getInstance().startSync();
        CookieManager cookieManager = CookieManager.getInstance();
        cookieManager.setAcceptCookie(true);
        CookieManager.getInstance().setAcceptThirdPartyCookies(myWebView, true);

        SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
        String token2= mPreferences.getString("auth_token","");

        HashMap map = new HashMap();
        map.put("x-auth-token", token);

        myWebView.getSettings().setAppCacheEnabled(true);
        myWebView.setWebViewClient(new WebViewClient() 
            public boolean shouldOverrideUrlLoading(WebView view,String url) 
                view.loadUrl(url);
                return true;
            
        );
        myWebView.loadUrl("YOUR_URL", map);
    

Tienes la posibilidad comunicar esta crónica si te fue de ayuda.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *