Ich habe über> 15 Stunden zu diesem Problem recherchiert: Ich baue eine Hybrid App, ich logge mich mit dem Volley Framework (native View) ein, sobald ich mich anmelde ich fetch die Antwort Header, entpacken Sie das Cookie und speichern Sie es in meine sharedprefs. Nach erfolgreicher Anmeldung habe ich einen nativen Hauptbildschirm, der Links zu mehreren Webviews enthält. Wie gebe ich den Cookie, den ich vom Login erhalten habe, an den Webview weiter? 90% der Antworten im Internet verwenden den CookieSyncManager, der veraltet ist. Ich habe den java.net.CookieManager auch ausprobiert, nichts davon funktioniert.Android Hybrid App + Volley, Cookies und WebView
Hier ist mein Code
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mWebView = new WebView(this);
setContentView(mWebView);
cookies = pref.getString(Const.COOKIE_KEY,"null");
userID = pref.getString(Const.USER_ID_KEY,"null");
mUrl = Const.PERFORMANCE_WEBVIEW_LINK + Const.USER_ID;
String cookieText = Const.COOKIE_KEY + "=" + cookies;
//Approach A Environment for the Cookies
//Does not work
cookieSync = CookieSyncManager.createInstance(this);
cookieManager = CookieManager.getInstance();
cookieManager.removeSessionCookie();
cookieManager.setCookie(mUrl, cookieText);
cookieSync.sync();
SystemClock.sleep(10000);
/*APPROACH B, sending the Cookies with header
##Did not Work##
final Map<String, String> headers = new HashMap<>();
Log.d("cookie", cookieText);
headers.put("Cookie",cookieText);
*/
if(cookies.equals("null") || userID.equals("null")) {
Toast.makeText(PerformanceWebview.this, "Error", Toast.LENGTH_SHORT).show();
//Logging Out
Intent intent = new Intent(this, LoginActivity.class);
startActivity(intent);
}
else {
//mWebView.loadUrl(mUrl,headers);
mWebView.loadUrl(mUrl);
Toast.makeText(PerformanceWebview.this,cookieText, Toast.LENGTH_SHORT).show();
Log.d("URL", "URL: " + mUrl);
}
}
Ich habe auch versucht, einen WebClient auf die WebView vorbei und overrode es shouldOverrideURl Methode ist und übergeben die Header hinein. Ein weiterer Ansatz, den ich tat WebSettings wurde mit und Leiten eines ChromeClient ..
Keine der hier Antworten scheinen
eine Lösung gefunden: namens Customer ihrem Backend-Entwickler zu sagen, einen Weg zu ermöglichen, Cookies zu vermeiden und meine Kundenanfragen zu akzeptieren – Makaveli