MainActivity.java 2.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. package com.knacki.mimou.activity;
  2. import android.content.Intent;
  3. import android.net.Uri;
  4. import android.os.Build;
  5. import android.os.Bundle;
  6. import android.support.v7.app.AppCompatActivity;
  7. import android.webkit.WebChromeClient;
  8. import android.webkit.WebView;
  9. import android.webkit.WebViewClient;
  10. import com.knacki.mimou.BuildConfig;
  11. import com.knacki.mimou.api.CredentialHolder;
  12. import com.knacki.mimou.JsInterface;
  13. import com.knacki.mimou.R;
  14. import java.util.logging.Logger;
  15. public class MainActivity extends AppCompatActivity {
  16. protected WebView web;
  17. protected JsInterface interfaceMimouDroid;
  18. private static Logger log = Logger.getLogger(MainActivity.class.getName());
  19. @Override
  20. protected void onCreate(Bundle savedInstanceState) {
  21. super.onCreate(savedInstanceState);
  22. setContentView(R.layout.activity_main);
  23. interfaceMimouDroid = new JsInterface();
  24. web = (WebView) findViewById(R.id.webview);
  25. web.setWebChromeClient(new WebChromeClient());
  26. web.setWebViewClient(new WebViewClient() {
  27. @Override
  28. public boolean shouldOverrideUrlLoading(WebView view, String url) {
  29. Uri uri = Uri.parse(url);
  30. log.fine("Loading url " +url);
  31. if (uri.getHost().equals(getString(R.string.mimouHost))) {
  32. if (uri.getPathSegments().get(0).equals("login")) {
  33. CredentialHolder.removeToken(MainActivity.this);
  34. showLogin();
  35. return true;
  36. }
  37. return super.shouldOverrideUrlLoading(view, url);
  38. }
  39. startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(url)));
  40. return true;
  41. }
  42. });
  43. if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
  44. web.setWebContentsDebuggingEnabled(BuildConfig.DEBUG);
  45. }
  46. web.getSettings().setJavaScriptEnabled(true);
  47. web.addJavascriptInterface(interfaceMimouDroid, "__native");
  48. web.loadUrl(CredentialHolder.isLocal(this) ? (getString(R.string.mimouUrl) + (getString(R.string.localUrl))) : getString(R.string.mimouUrl));
  49. }
  50. protected void showLogin() {
  51. startActivity(new Intent(MainActivity.this, LoginActivity.class));
  52. }
  53. @Override
  54. protected void onResume() {
  55. super.onResume();
  56. if (!CredentialHolder.hasCredential(this)) {
  57. showLogin();
  58. }
  59. interfaceMimouDroid.setActivity(this);
  60. }
  61. @Override
  62. public void onBackPressed() {
  63. moveTaskToBack(true);
  64. }
  65. }