Parcourir la source

[add] init js bridge interface
[add][wip] login activity
[add] init webview

isundil il y a 8 ans
Parent
commit
e2ae4c45cf

+ 3 - 0
.idea/misc.xml

@@ -2,6 +2,9 @@
 <project version="4">
   <component name="EntryPointsManager">
     <entry_points version="2.0" />
+    <list size="1">
+      <item index="0" class="java.lang.String" itemvalue="android.webkit.JavascriptInterface" />
+    </list>
   </component>
   <component name="NullableNotNullManager">
     <option name="myDefaultNullable" value="android.support.annotation.Nullable" />

+ 1 - 1
.idea/modules.xml

@@ -3,7 +3,7 @@
   <component name="ProjectModuleManager">
     <modules>
       <module fileurl="file://$PROJECT_DIR$/app/app.iml" filepath="$PROJECT_DIR$/app/app.iml" />
-      <module fileurl="file://$PROJECT_DIR$/mimou-chat-andoid.iml" filepath="$PROJECT_DIR$/mimou-chat-andoid.iml" />
+      <module fileurl="file://$PROJECT_DIR$/mimouchat-android.iml" filepath="$PROJECT_DIR$/mimouchat-android.iml" />
     </modules>
   </component>
 </project>

+ 6 - 0
app/src/debug/res/values/strings.xml

@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources>
+    <string name="mimouUrl">http://debug.mimouchat.knacki.info/</string>
+    <string name="mimouHost">debug.mimouchat.knacki.info</string>
+    <string name="mimouScheme">http</string>
+</resources>

+ 4 - 2
app/src/main/AndroidManifest.xml

@@ -2,19 +2,21 @@
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
     package="com.knacki.mimou">
 
+    <uses-permission android:name="android.permission.INTERNET" />
+
     <application
         android:allowBackup="true"
         android:icon="@mipmap/ic_launcher"
         android:label="@string/app_name"
         android:supportsRtl="true"
         android:theme="@style/AppTheme">
-        <activity android:name=".MainActivity">
+        <activity android:name=".activity.MainActivity">
             <intent-filter>
                 <action android:name="android.intent.action.MAIN" />
 
                 <category android:name="android.intent.category.LAUNCHER" />
             </intent-filter>
         </activity>
+        <activity android:name=".activity.LoginActivity" android:noHistory="true"></activity>
     </application>
-
 </manifest>

+ 22 - 0
app/src/main/java/com/knacki/mimou/JsInterface.java

@@ -0,0 +1,22 @@
+package com.knacki.mimou;
+
+import android.app.Activity;
+import android.content.Intent;
+import android.webkit.JavascriptInterface;
+
+import com.knacki.mimou.activity.LoginActivity;
+
+/**
+ * Created by thibal on 1/4/18.
+ */
+public class JsInterface {
+    Activity mainActivity;
+
+    public void setActivity(Activity mainActivity) {
+        this.mainActivity = mainActivity;
+    }
+
+    @JavascriptInterface
+    public void login() {
+    }
+}

+ 0 - 13
app/src/main/java/com/knacki/mimou/MainActivity.java

@@ -1,13 +0,0 @@
-package com.knacki.mimou;
-
-import android.support.v7.app.AppCompatActivity;
-import android.os.Bundle;
-
-public class MainActivity extends AppCompatActivity {
-
-    @Override
-    protected void onCreate(Bundle savedInstanceState) {
-        super.onCreate(savedInstanceState);
-        setContentView(R.layout.activity_main);
-    }
-}

+ 37 - 0
app/src/main/java/com/knacki/mimou/activity/LoginActivity.java

@@ -0,0 +1,37 @@
+package com.knacki.mimou.activity;
+
+import android.os.Bundle;
+import android.support.v7.app.AppCompatActivity;
+import android.view.View;
+import android.widget.Button;
+import android.widget.TextView;
+import android.widget.Toast;
+
+import com.knacki.mimou.R;
+
+public class LoginActivity extends AppCompatActivity {
+
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setContentView(R.layout.activity_login);
+
+        ((Button) findViewById(R.id.login)).setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View view) {
+                Toast.makeText(LoginActivity.this, "test", Toast.LENGTH_LONG).show();
+            }
+        });
+        ((TextView) findViewById(R.id.login_local)).setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View view) {
+                Toast.makeText(LoginActivity.this, "test local", Toast.LENGTH_LONG).show();
+            }
+        });
+    }
+
+    @Override
+    public void onBackPressed() {
+        moveTaskToBack(true);
+    }
+}

+ 63 - 0
app/src/main/java/com/knacki/mimou/activity/MainActivity.java

@@ -0,0 +1,63 @@
+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.JsInterface;
+import com.knacki.mimou.R;
+
+public class MainActivity extends AppCompatActivity {
+    protected WebView web;
+    protected JsInterface interfaceMimouDroid;
+    private boolean needLogin = false;
+
+    @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);
+
+                if (uri.getHost().equals(getString(R.string.mimouHost))) {
+                    if (uri.getPathSegments().get(0).equals("login")) {
+                        needLogin = true;
+                        startActivity(new Intent(MainActivity.this, LoginActivity.class));
+                        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(getString(R.string.mimouUrl));
+    }
+
+    @Override
+    protected void onResume() {
+        super.onResume();
+        if (needLogin) {
+            startActivity(new Intent(MainActivity.this, LoginActivity.class));
+        }
+        interfaceMimouDroid.setActivity(this);
+    }
+}

+ 28 - 0
app/src/main/res/layout/activity_login.xml

@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:tools="http://schemas.android.com/tools"
+    android:orientation="vertical"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:paddingBottom="@dimen/activity_vertical_margin"
+    android:paddingLeft="@dimen/activity_horizontal_margin"
+    android:paddingRight="@dimen/activity_horizontal_margin"
+    android:paddingTop="@dimen/activity_vertical_margin"
+    tools:context="com.knacki.mimou.activity.LoginActivity">
+    <TextView
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:text="@string/login_text"/>
+    <Button
+        android:id="@+id/login"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:text="@string/action_login"/>
+    <TextView
+        android:id="@+id/login_local"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:textAlignment="textEnd"
+        android:linksClickable="true"
+        android:text="@string/action_login_local"/>
+</LinearLayout>

+ 9 - 6
app/src/main/res/layout/activity_main.xml

@@ -8,10 +8,13 @@
     android:paddingLeft="@dimen/activity_horizontal_margin"
     android:paddingRight="@dimen/activity_horizontal_margin"
     android:paddingTop="@dimen/activity_vertical_margin"
-    tools:context="com.knacki.mimou.MainActivity">
-
-    <TextView
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:text="Hello World!" />
+    tools:context="com.knacki.mimou.activity.MainActivity">
+    <WebView
+        android:id="@+id/webview"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:layout_marginRight="0px"
+        android:layout_marginBottom="0px"
+        android:layout_marginLeft="0px"
+        android:layout_marginTop="0px"></WebView>
 </RelativeLayout>

+ 6 - 0
app/src/main/res/values-en/strings.xml

@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources>
+    <string name="login_text">Please login to access your chats or continue without login</string>
+    <string name="action_login">Login</string>
+    <string name="action_login_local">Continue without login</string>
+</resources>

+ 6 - 0
app/src/main/res/values-fr/strings.xml

@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources>
+    <string name="login_text">Please login to access your chats or continue without login</string>
+    <string name="action_login">Login</string>
+    <string name="action_login_local">Continue without login</string>
+</resources>

+ 3 - 0
app/src/main/res/values/strings.xml

@@ -1,3 +1,6 @@
 <resources>
     <string name="app_name">Mimou</string>
+    <string name="mimouUrl">https://mimouchat.knacki.info/</string>
+    <string name="mimouHost">mimouchat.knacki.info</string>
+    <string name="mimouScheme">https</string>
 </resources>