package com.myapp.myapp; import android.app.Activity; import android.graphics.Bitmap; import android.graphics.Color; import android.os.Build; import android.os.Bundle; import android.view.View; import android.webkit.CookieManager; import android.webkit.WebChromeClient; import android.webkit.WebView; import android.webkit.WebViewClient; import android.widget.Button; import android.widget.ProgressBar; import com.parse.ParseInstallation; public class MainActivity extends Activity { private Activity activity; private WebView webView; private View noInternetImage, splashImage; private ProgressBar progressBar; private Button retryButton; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main_activity); activity = this; splashImage = findViewById(R.id.splashImage); progressBar = (ProgressBar)findViewById(R.id.progressBar); webView = (WebView)findViewById(R.id.webview); noInternetImage = findViewById(R.id.noInternetImage); retryButton = (Button)findViewById(R.id.retryButton); webView.setBackgroundColor(Color.parseColor("#1e2b3e")); webView.getSettings().setJavaScriptEnabled(true); webView.setWebViewClient(new MyWebViewClient()); webView.setWebChromeClient(new WebChromeClient()); if (!DetectConnection.checkInternetConnection(activity)) { showNoInternetScreen(); } else { String url = getUrlFromParamsOrDefault(); webView.loadUrl(url); } } private class MyWebViewClient extends WebViewClient { @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { if (!DetectConnection.checkInternetConnection(activity)) { showNoInternetScreen(); } else { view.loadUrl(url); } return true; } @Override public void onPageStarted(WebView view, String url, Bitmap favicon) { super.onPageStarted(view, url, favicon); } @Override public void onPageFinished(final WebView view, final String url) { setParseUser(url); showWebView(); super.onPageFinished(view, url); } public void setParseUser(final String url) { String userId = getCookie(url, "snp_notification_id"); if (userId != null) { ParseInstallation installation = ParseInstallation.getCurrentInstallation(); installation.put("userId", userId); installation.saveInBackground(); } } public String getCookie(String siteName, String cookieName){ CookieManager cookieManager = CookieManager.getInstance(); String cookiesString = CookieManager.getInstance().getCookie(siteName); String[] cookiesArray = cookiesString.split(";"); for (String cookie : cookiesArray ){ String[] keyValueArray = cookie.split("="); String key = keyValueArray[0]; String value = keyValueArray[1]; if (key.equals(cookieName)) return value; } return null; } } public void reloadWebView(View view) { if (!DetectConnection.checkInternetConnection(activity)) { showNoInternetScreen(); } else { showLoadingScreen(); String url = getUrlFromParamsOrDefault(); webView.loadUrl(url); } } private void showWebView() { webView.setVisibility(View.VISIBLE); noInternetImage.setVisibility(View.GONE); retryButton.setVisibility(View.GONE); splashImage.setVisibility(View.GONE); progressBar.setVisibility(View.GONE); } private void showLoadingScreen() { webView.setVisibility(View.GONE); noInternetImage.setVisibility(View.GONE); retryButton.setVisibility(View.GONE); splashImage.setVisibility(View.VISIBLE); progressBar.setVisibility(View.VISIBLE); } private void showNoInternetScreen() { noInternetImage.setVisibility(View.VISIBLE); retryButton.setVisibility(View.VISIBLE); splashImage.setVisibility(View.GONE); progressBar.setVisibility(View.GONE); webView.setVisibility(View.GONE); } private String getUrlFromParamsOrDefault() { String url = "https://www.example.com"; Bundle extras = getIntent().getExtras(); if (extras != null) { url = extras.getString("url"); } return url; } @Override public void onBackPressed() { if (webView != null && webView.canGoBack()) { webView.goBack(); } else { super.onBackPressed(); } } }