Autore Topic: Come gestire i cookie in una webview?  (Letto 1734 volte)

Offline Dav_android

  • Utente junior
  • **
  • Post: 78
  • Respect: +1
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy Tab2 10.1
  • Sistema operativo:
    Windows 8
Come gestire i cookie in una webview?
« il: 16 Gennaio 2013, 13:57:10 CET »
0
Ciao ragazzi sto facendo un'applicazione web che apre delle pagine web in una webview, mi sono accorto che però i cookie sembrano non funzionare: su un normale browser il tutto funziona correttamente ma quando arresti l'app su android e poi la riavvii, i cookie non funzionano sapete dirmi come risolvere il problema: il mio codice è il seguente:

Codice (Java): [Seleziona]
package xxx;

import android.os.Bundle;
import android.view.KeyEvent;
import android.webkit.WebChromeClient;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.app.Activity;

public class MainActivity extends Activity {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
       
        WebView webView = (WebView) findViewById(R.id.webView);
        webView.setWebChromeClient(new WebChromeClient());
        webView.loadUrl("http://xxxxxxxx");
        WebSettings webSettings = webView.getSettings();
        webSettings.setJavaScriptEnabled(true);
        webView.setWebViewClient(new WebViewClient());
    }
   
    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        WebView webView = (WebView) findViewById(R.id.webView);
        // Check if the key event was the Back button and if there's history
        if ((keyCode == KeyEvent.KEYCODE_BACK) && webView.canGoBack()) {
            webView.goBack();
            return true;
        }
        // If it wasn't the Back key or there's no web page history, bubble up to the default
        // system behavior (probably exit the activity)
        return super.onKeyDown(keyCode, event);
    }

}

Offline Dav_android

  • Utente junior
  • **
  • Post: 78
  • Respect: +1
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy Tab2 10.1
  • Sistema operativo:
    Windows 8
Re:Come gestire i cookie in una webview?
« Risposta #1 il: 28 Gennaio 2013, 09:31:24 CET »
0
Ragazzi, ho trovato la classe CookieManager che ha il metodo acceptCookie(); potreste spiegarmi come utilizzarlo nel codice che ho postato?

Offline david3ff3

  • Nuovo arrivato
  • *
  • Post: 27
  • Respect: 0
    • Mostra profilo
Re:Come gestire i cookie in una webview?
« Risposta #2 il: 29 Gennaio 2013, 05:29:10 CET »
0
guarda io non ho usato nulla di tutto cio' ti porgo una semplice domanda l expired nel cookie quanto tempo ha? e poi usi le sessioni nel sito??

Offline Dav_android

  • Utente junior
  • **
  • Post: 78
  • Respect: +1
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy Tab2 10.1
  • Sistema operativo:
    Windows 8
Re:Come gestire i cookie in una webview?
« Risposta #3 il: 29 Gennaio 2013, 08:03:54 CET »
0
Non hai usato niente di tutto ciò nel senso che i cookie ti funzionano senza settare nulla? I cookie del sito hanno durata 1 anno, e le sessioni uso quelle del sito, perché c'è qualche modo diverso per farlo tramite android? Per favore spiegami come risolvere questo problema che ci sto impazzendo da un po'!

Offline david3ff3

  • Nuovo arrivato
  • *
  • Post: 27
  • Respect: 0
    • Mostra profilo
Re:Come gestire i cookie in una webview?
« Risposta #4 il: 29 Gennaio 2013, 08:33:10 CET »
0
no io non ho settato neinte al rigurado i cookie nell' app nel php ho messo i coockie e poi le sessioni come si fa regolamente nel login nei siti e si mi rimane loggato dopo aver chiuso l' app :)
« Ultima modifica: 29 Gennaio 2013, 08:39:41 CET da david3ff3 »

Offline david3ff3

  • Nuovo arrivato
  • *
  • Post: 27
  • Respect: 0
    • Mostra profilo
Re:Come gestire i cookie in una webview?
« Risposta #5 il: 29 Gennaio 2013, 09:24:47 CET »
0
ora provo un pò e ti faccio sapere
« Ultima modifica: 29 Gennaio 2013, 09:26:37 CET da david3ff3 »

Offline david3ff3

  • Nuovo arrivato
  • *
  • Post: 27
  • Respect: 0
    • Mostra profilo
Re:Come gestire i cookie in una webview?
« Risposta #6 il: 29 Gennaio 2013, 10:31:55 CET »
0
ecco anche io avevo sto problema e non me ne ero reso conto:D risolto mettendo nell onpagefinished
Codice (Java): [Seleziona]
 CookieSyncManager.getInstance().sync();

Offline Dav_android

  • Utente junior
  • **
  • Post: 78
  • Respect: +1
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy Tab2 10.1
  • Sistema operativo:
    Windows 8
Re:Come gestire i cookie in una webview?
« Risposta #7 il: 29 Gennaio 2013, 12:30:41 CET »
0
Mi scriveresti nel mio codice dove dovrei metterlo, perché forse dove l'ho messo non va bene!

Offline david3ff3

  • Nuovo arrivato
  • *
  • Post: 27
  • Respect: 0
    • Mostra profilo
Re:Come gestire i cookie in una webview?
« Risposta #8 il: 29 Gennaio 2013, 13:21:00 CET »
0
Codice (Java): [Seleziona]
import android.os.Bundle;
import android.view.KeyEvent;
import android.webkit.CookieSyncManager;
import android.webkit.WebChromeClient;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.app.Activity;
import android.content.Context;

public class MainActivity extends Activity {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        final Context miaApp = this;
        CookieSyncManager.createInstance(miaApp);
        CookieSyncManager.getInstance().sync();
        WebView webView = (WebView) findViewById(R.id.webView);
        webView.setWebChromeClient(new WebChromeClient());
        webView.loadUrl("Sito");
        WebSettings webSettings = webView.getSettings();
        webSettings.setJavaScriptEnabled(true);
        webView.setWebViewClient(new WebViewClient());
    }
    public void onPageFinished(WebView view, String url) {
       
        CookieSyncManager.getInstance().sync();
    }
    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        WebView webView = (WebView) findViewById(R.id.webView);
        // Check if the key event was the Back button and if there's history
        if ((keyCode == KeyEvent.KEYCODE_BACK) && webView.canGoBack()) {
            webView.goBack();
            return true;
        }
        // If it wasn't the Back key or there's no web page history, bubble up to the default
        // system behavior (probably exit the activity)
        return super.onKeyDown(keyCode, event);
    }

}

ho provato e funziona perfettamente sul mio sito ricreando il tuo codice ;)
« Ultima modifica: 29 Gennaio 2013, 13:22:35 CET da david3ff3 »

Offline Dav_android

  • Utente junior
  • **
  • Post: 78
  • Respect: +1
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy Tab2 10.1
  • Sistema operativo:
    Windows 8
Re:Come gestire i cookie in una webview?
« Risposta #9 il: 29 Gennaio 2013, 16:45:38 CET »
0
Grazie 1000 ma questa riga a cosa serve?

Codice (Java): [Seleziona]
final Context miaApp = this;
per il resto pensi che funzioni bene il tutto con il codice che ho scritto? anche se spegni e riaccendi il dispositivo funzionano i cookie?

Offline david3ff3

  • Nuovo arrivato
  • *
  • Post: 27
  • Respect: 0
    • Mostra profilo
Re:Come gestire i cookie in una webview?
« Risposta #10 il: 30 Gennaio 2013, 12:21:47 CET »
0
di nulla funziona anche se riavii il cell visto che io ho riavviato l emulatore e ha preso i cookie ;) credo che tu debba mettere il topic su risolto :-p