2017-11-19 4 views
1

Ich habe ein Problem. Wenn ich view.loadUrl("http://mysite"); und versuche mich anzumelden, app behandelt nicht die Sitzung, und zeigt, dass ich nicht angemeldet bin, aber wenn ich view.loadUrl("http://google.com"); einrichten und meine Website über Google-Suche laden, wird die Sitzung korrekt eingerichtet, andere Site Logins view.loadUrl("http://othersite") Logging gut zu;webview android speichert Session/Cookies nicht

Bitte helfen, ich habe alles versucht, aber nichts hilft ... Danke.

P.S Website funktioniert gut in anderen Browsern. meine xml

<?xml version="1.0" encoding="utf-8"?> 
<android.widget.FrameLayout xmlns:android="http://schemas.android.com /apk/res/android" 
xmlns:app="http://schemas.android.com/apk/res-auto" 
xmlns:tools="http://schemas.android.com/tools" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
tools:context="com.example.gtr.rox.MainActivity" 
android:background="#333333" 
android:id="@+id/webview_frame"> 
<WebView 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:id="@+id/webView" 
    android:layout_alignParentBottom="true" 
    android:layout_alignParentRight="true" 
    android:layout_alignParentEnd="true" 
    android:layout_alignParentTop="true" 
    android:layout_alignParentLeft="true" 
    android:layout_alignParentStart="true" /> 
    </android.widget.FrameLayout> 

Haupttätigkeit

public class MainActivity extends AppCompatActivity { 
private WebView mWebviewPop; 
private WebView view; 
private FrameLayout mContainer; 
private Context mContext; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    CookieManager cookieManager = CookieManager.getInstance(); 
    cookieManager.setAcceptCookie(true); 
    view = (WebView) this.findViewById(R.id.webView); 
    mContainer = (FrameLayout) findViewById(R.id.webview_frame); 
    view.getSettings().setJavaScriptEnabled(true); 
    view.getSettings().setUserAgentString("Mozilla/5.0 (Linux; Android 4.4.2; ZTE T221 Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.85 Mobile Safari/537.36"); 
    view.getSettings().setAppCacheEnabled(true); 
    view.getSettings().setLoadWithOverviewMode(true); 
    view.getSettings().setUseWideViewPort(true); 
    view.getSettings().setDatabaseEnabled(true); 
    view.getSettings().setJavaScriptCanOpenWindowsAutomatically(true); 
    view.getSettings().setSupportMultipleWindows(true); 
    view.getSettings().setAllowFileAccess(true); 
    view.getSettings().setDomStorageEnabled(true); 
    view.invalidate(); 
    view.setWebViewClient(new MyBrowser() { 
    }); 
    view.getSettings().setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK); 
    view.loadUrl("http://mysite"); 
    view.setWebChromeClient(new UriChromeClient() { 
    }); 
    SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this); 
    if (!prefs.getBoolean("firstTime", false)) { 
     Intent alarmIntent = new Intent(this, AlarmReceiver.class); 
     PendingIntent pendingIntent = PendingIntent.getBroadcast(this, 0, alarmIntent, 0); 
     AlarmManager manager = (AlarmManager) getSystemService(Context.ALARM_SERVICE); 
     Calendar calendar = Calendar.getInstance(); 
     calendar.setTimeInMillis(System.currentTimeMillis()); 
     calendar.set(Calendar.HOUR_OF_DAY, 18); 
     calendar.set(Calendar.MINUTE, 30); 
     calendar.set(Calendar.SECOND, 1); 
     manager.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), 
       AlarmManager.INTERVAL_DAY, pendingIntent); 
     SharedPreferences.Editor editor = prefs.edit(); 
     editor.putBoolean("firstTime", true); 
     editor.apply(); 
    } 
    mContext=this.getApplicationContext(); 
} 


private class MyBrowser extends WebViewClient { 
    @Override 
    public boolean shouldOverrideUrlLoading(WebView view, String url) { 
     if (url.startsWith("tel:") || url.startsWith("sms:") || url.startsWith("smsto:") || url.startsWith("mailto:") || url.startsWith("mms:") || url.startsWith("mmsto:") || url.startsWith("market:") || url.startsWith("https://youtu")) { 
      Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url)); 
      startActivity(intent); 
      return true; 
     } else { 
      view.loadUrl(url); 
      return true; 
     } 
    } 
    @Override 
    public void onReceivedSslError(WebView view, SslErrorHandler handler, 
            SslError error) { 
     Log.d("onReceivedSslError", "onReceivedSslError"); 
     //super.onReceivedSslError(view, handler, error); 
    } 

} 
@Override 
public boolean onKeyDown(int keyCode, KeyEvent event) 
{ 
    if ((keyCode == KeyEvent.KEYCODE_BACK) && view.canGoBack()) { 
     view.goBack(); 
     return true; 
    } 
    return super.onKeyDown(keyCode, event); 
} 
class UriChromeClient extends WebChromeClient { 
    @Override 
    public boolean onCreateWindow(WebView view, boolean isDialog, 
            boolean isUserGesture, Message resultMsg) { 
     CookieManager cookieManager = CookieManager.getInstance(); 
     cookieManager.setAcceptCookie(true); 
     mWebviewPop = new WebView(mContext); 
     mWebviewPop.setVerticalScrollBarEnabled(false); 
     mWebviewPop.getSettings().setLoadWithOverviewMode(true); 
     mWebviewPop.getSettings().setUseWideViewPort(true); 
     mWebviewPop.setHorizontalScrollBarEnabled(false); 
     mWebviewPop.setWebViewClient(new MyBrowser()); 
     mWebviewPop.getSettings().setDatabaseEnabled(true); 
     mWebviewPop.getSettings().setJavaScriptEnabled(true); 
     mWebviewPop.getSettings().setSavePassword(true); 
     mWebviewPop.getSettings().setAppCacheEnabled(true); 
     mWebviewPop.getSettings().setJavaScriptCanOpenWindowsAutomatically(true); 
     mWebviewPop.getSettings().setSupportMultipleWindows(true); 
     mWebviewPop.getSettings().setAllowFileAccess(true); 
     mWebviewPop.getSettings().setDomStorageEnabled(true); 
     mWebviewPop.setLayoutParams(new FrameLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, 
       ViewGroup.LayoutParams.MATCH_PARENT)); 
     mContainer.addView(mWebviewPop); 
     WebView.WebViewTransport transport = (WebView.WebViewTransport) resultMsg.obj; 
     transport.setWebView(mWebviewPop); 
     resultMsg.sendToTarget(); 
     return true; 
    } 

    @Override 
    public void onCloseWindow(WebView window) { 
     Log.d("onCloseWindow", "called"); 
    } 
} 

}

Antwort

0

durch Entfernen Gelöst diese Zeile

view.getSettings().setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK); 

Und es funktioniert!