Просмотр исходного кода

[수정사항]
1. Netatmo WebView 캐쉬 삭제 추가.
2. Netatmo Url 가져오는 방법 변경.

aaron 9 лет назад
Родитель
Сommit
599c7f995f

+ 76 - 57
kneet_v3/src/main/java/com/ntels/kneet/v3/view/things/ThingsDeviceNetatmoLogin.java

@@ -27,6 +27,8 @@ import android.os.Message;
 import android.view.LayoutInflater;
 import android.view.View;
 import android.view.Window;
+import android.webkit.CookieManager;
+import android.webkit.CookieSyncManager;
 import android.webkit.WebChromeClient;
 import android.webkit.WebSettings;
 import android.webkit.WebView;
@@ -122,64 +124,9 @@ public class ThingsDeviceNetatmoLogin extends CustomActivity implements
     private void displayView() {
         mNetatmoProgressBar = (ProgressBar) findViewById(R.id.netatmoProgressBar);
 
-        mNetatmoWebView = (WebView) findViewById(R.id.netatmoWebView);
-        mNetatmoWebView.getSettings().setJavaScriptEnabled(true);
-        mNetatmoWebView.getSettings().setJavaScriptCanOpenWindowsAutomatically(true);
-        mNetatmoWebView.getSettings().setCacheMode(WebSettings.LOAD_NO_CACHE);
-        mNetatmoWebView.setLayerType(View.LAYER_TYPE_HARDWARE, null);
-        mNetatmoWebView.getSettings().setLoadWithOverviewMode(true);
-        mNetatmoWebView.getSettings().setUseWideViewPort(true);
-        mNetatmoWebView.getSettings().setLayoutAlgorithm(WebSettings.LayoutAlgorithm.SINGLE_COLUMN);
-        mNetatmoWebView.setWebChromeClient(new WebChromeClient() {
-            @Override
-            public void onProgressChanged(WebView view, int newProgress) {
-                if (newProgress == PROGRESS_LOADING_COMPLETE) {
-                    mNetatmoProgressBar.setVisibility(View.GONE);
-                    return;
-                }
-                mNetatmoProgressBar.setVisibility(View.VISIBLE);
-                mNetatmoProgressBar.setProgress(newProgress);
-            }
-        });
-        mNetatmoWebView.setWebViewClient(new WebViewClient() {
-
-            @Override
-            public boolean shouldOverrideUrlLoading(WebView view, String url) {
-                LogUtil.i(TAG, "shouldOverrideUrlLoading::url - " + url);
-                if (url.startsWith(APP_SCHEME)) {
-                    LogUtil.i(TAG, "url - " + url);
-                    UrlQuerySanitizer sanitizer = new UrlQuerySanitizer(url);
-                    if (null != sanitizer.getValue("code")) {
-                        mAuthToken = sanitizer.getValue("code");
-                        LogUtil.i(TAG, "mAuthToken - " + mAuthToken);
-                        comHandler.sendEmptyMessageDelayed(MSG_COM_P_NETATMO_LOGIN,
-                                Constants.HANDLER_DELAY_MILLIS);
-                    } else {
-                        if (null != sanitizer.getValue("error")) {
-                            String errorCode = sanitizer.getValue("error");
-                            if ("access_denied".equals(errorCode)) {
-                                mCustomDialog.msgAlert(mActivity, Constants.MSG918);
-                            } else {
-                                mCustomDialog.msgAlert(mActivity, Constants.MSG000,
-                                        sanitizer.getValue("error"));
-                            }
-                            return true;
-                        }
-                        onBackPressed();
-                    }
-                    return true;
-                }
-                return false;
-            }
-
-            @Override
-            public void onPageFinished(WebView view, String url) {
-                super.onPageFinished(view, url);
-                view.invalidate();
-            }
-        });
+        netatmoWebViewSetting();
         LogUtil.i(TAG, "loadUrl - " + getString(R.string.netatmo_auth));
-        mNetatmoWebView.loadUrl(getString(R.string.netatmo_auth));
+        mNetatmoWebView.loadUrl(getString(R.string.netatmo_auth, getString(R.string.client_id)));
     }
 
     /**
@@ -268,4 +215,76 @@ public class ThingsDeviceNetatmoLogin extends CustomActivity implements
         }
     }
 
+    private void clearCache() {
+        mNetatmoWebView.clearHistory();
+        mNetatmoWebView.clearCache(true);
+        mNetatmoWebView.clearView();
+        CookieSyncManager cookieSyncManager = CookieSyncManager.createInstance(this);
+        CookieManager cookieManager = CookieManager.getInstance();
+        cookieManager.setAcceptCookie(true);
+        cookieManager.removeSessionCookie();
+        cookieSyncManager.sync();
+    }
+
+    private void netatmoWebViewSetting() {
+        mNetatmoWebView = (WebView) findViewById(R.id.netatmoWebView);
+        clearCache();
+        mNetatmoWebView.getSettings().setJavaScriptEnabled(true);
+        mNetatmoWebView.getSettings().setJavaScriptCanOpenWindowsAutomatically(true);
+        mNetatmoWebView.getSettings().setAppCacheEnabled(false);
+        mNetatmoWebView.getSettings().setCacheMode(WebSettings.LOAD_NO_CACHE);
+        mNetatmoWebView.setLayerType(View.LAYER_TYPE_HARDWARE, null);
+        mNetatmoWebView.getSettings().setLoadWithOverviewMode(true);
+        mNetatmoWebView.getSettings().setUseWideViewPort(true);
+        mNetatmoWebView.getSettings().setLayoutAlgorithm(WebSettings.LayoutAlgorithm.SINGLE_COLUMN);
+        mNetatmoWebView.setWebChromeClient(new WebChromeClient() {
+            @Override
+            public void onProgressChanged(WebView view, int newProgress) {
+                if (newProgress == PROGRESS_LOADING_COMPLETE) {
+                    mNetatmoProgressBar.setVisibility(View.GONE);
+                    return;
+                }
+                mNetatmoProgressBar.setVisibility(View.VISIBLE);
+                mNetatmoProgressBar.setProgress(newProgress);
+            }
+        });
+        mNetatmoWebView.setWebViewClient(new WebViewClient() {
+
+            @Override
+            public boolean shouldOverrideUrlLoading(WebView view, String url) {
+                LogUtil.i(TAG, "shouldOverrideUrlLoading::url - " + url);
+                if (url.startsWith(APP_SCHEME)) {
+                    LogUtil.i(TAG, "url - " + url);
+                    UrlQuerySanitizer sanitizer = new UrlQuerySanitizer(url);
+                    if (null != sanitizer.getValue("code")) {
+                        mAuthToken = sanitizer.getValue("code");
+                        LogUtil.i(TAG, "mAuthToken - " + mAuthToken);
+                        comHandler.sendEmptyMessageDelayed(MSG_COM_P_NETATMO_LOGIN,
+                                Constants.HANDLER_DELAY_MILLIS);
+                    } else {
+                        if (null != sanitizer.getValue("error")) {
+                            String errorCode = sanitizer.getValue("error");
+                            if ("access_denied".equals(errorCode)) {
+                                mCustomDialog.msgAlert(mActivity, Constants.MSG918);
+                            } else {
+                                mCustomDialog.msgAlert(mActivity, Constants.MSG000,
+                                        sanitizer.getValue("error"));
+                            }
+                            return true;
+                        }
+                        onBackPressed();
+                    }
+                    return true;
+                }
+                return false;
+            }
+
+            @Override
+            public void onPageFinished(WebView view, String url) {
+                super.onPageFinished(view, url);
+                view.invalidate();
+            }
+        });
+    }
+
 }

+ 2 - 1
kneet_v3/src/main/res/values/strings_send_url.xml

@@ -167,5 +167,6 @@
   </string>
 
   <!-- Netatmo URL -->
-  <string name="netatmo_auth" translatable="false"><![CDATA["https://api.netatmo.com/oauth2/authorize?client_id=57e8c984743c3643518be0c7&redirect_uri=kneet-app://getOauthCode&scope=read_camera access_camera&state=requestKneetAuth"]]></string>
+  <!--<string name="netatmo_auth" translatable="false"><![CDATA["https://api.netatmo.com/oauth2/authorize?client_id=586dd4d6ac34a5bc888b89a9&redirect_uri=kneet-app://getOauthCode&scope=read_camera access_camera&state=requestKneetAuth"]]></string>-->
+  <string name="netatmo_auth" translatable="false"><![CDATA["https://api.netatmo.com/oauth2/authorize?client_id=%1$s&redirect_uri=kneet-app://getOauthCode&scope=read_camera access_camera&state=requestKneetAuth"]]></string>
 </resources>