package com.knacki.mimou.activity; import android.content.Intent; import android.net.Uri; import android.os.Build; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.webkit.WebChromeClient; import android.webkit.WebView; import android.webkit.WebViewClient; import com.knacki.mimou.BuildConfig; import com.knacki.mimou.api.CredentialHolder; import com.knacki.mimou.JsInterface; import com.knacki.mimou.R; import java.util.logging.Logger; public class MainActivity extends AppCompatActivity { protected WebView web; protected JsInterface interfaceMimouDroid; private static Logger log = Logger.getLogger(MainActivity.class.getName()); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); interfaceMimouDroid = new JsInterface(); web = (WebView) findViewById(R.id.webview); web.setWebChromeClient(new WebChromeClient()); web.setWebViewClient(new WebViewClient() { @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { Uri uri = Uri.parse(url); log.fine("Loading url " +url); if (uri.getHost().equals(getString(R.string.mimouHost))) { if (uri.getPathSegments().get(0).equals("login")) { CredentialHolder.removeToken(MainActivity.this); showLogin(); return true; } return super.shouldOverrideUrlLoading(view, url); } startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(url))); return true; } }); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { web.setWebContentsDebuggingEnabled(BuildConfig.DEBUG); } web.getSettings().setJavaScriptEnabled(true); web.addJavascriptInterface(interfaceMimouDroid, "__native"); web.loadUrl(CredentialHolder.isLocal(this) ? (getString(R.string.mimouUrl) + (getString(R.string.localUrl))) : getString(R.string.mimouUrl)); } protected void showLogin() { startActivity(new Intent(MainActivity.this, LoginActivity.class)); } @Override protected void onResume() { super.onResume(); if (!CredentialHolder.hasCredential(this)) { showLogin(); } interfaceMimouDroid.setActivity(this); } @Override public void onBackPressed() { moveTaskToBack(true); } }