Ver código fonte

2.修改Android Apex CRM Activity恢复时不能处理返回数据。

Pen Li 7 anos atrás
pai
commit
4d99327666

+ 52 - 22
ApexDrivers/apexcrm/src/main/java/com/usai/apex/apexcrm/MainActivity.java

@@ -12,6 +12,7 @@ import android.net.Uri;
 import android.net.http.SslError;
 import android.os.Build;
 import android.os.Bundle;
+import android.os.Handler;
 import android.support.v4.content.PermissionChecker;
 import android.support.v7.app.ActionBar;
 import android.support.v7.app.AlertDialog;
@@ -92,6 +93,8 @@ public class MainActivity extends AppCompatActivity implements RAWebView.WebView
     private ProgressBar mProgressbar;
     private String mURL;
 
+    private boolean saved = false;
+
     @Override
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
@@ -135,6 +138,7 @@ public class MainActivity extends AppCompatActivity implements RAWebView.WebView
 
         mWebView.setLoadCallback(this);
 
+        saved = savedInstanceState != null;
         if (savedInstanceState != null) {
             mCurrentActionString = savedInstanceState.getString(CurrentActionStringKey);
 
@@ -342,29 +346,54 @@ public class MainActivity extends AppCompatActivity implements RAWebView.WebView
     protected void onActivityResult(int requestCode, int resultCode, Intent data) {
 
         Log.d(TAG, "onActivityResult: ");
-        if (requestCode == REQUEST_SCANNER_CODE) {
+        super.onActivityResult(requestCode, resultCode, data);
+
+        handleResult(requestCode, resultCode, data);
+    }
 
-            onScannerResult(resultCode, data);
+    private void handleResult(final int requestCode, final int resultCode, final Intent data) {
 
-        } else if (requestCode == REQUEST_CAMERA_CODE) {
+        if (saved) {
+            loading = true;
+            saved = false;
+        }
 
-            onCameraResult(resultCode, data);
-        } else if (requestCode == REQUEST_PHOTO_LIBRARY_CODE) {
+        // webView已经加载完成
+        if (!loading) {
 
-            onPhotoLibraryResult(resultCode, data);
-        } else if (requestCode == REQUEST_SIGNATURE_CODE) {
+            if (requestCode == REQUEST_SCANNER_CODE) {
 
-            onSignatureResult(resultCode, data);
-        } else if (requestCode == REQUEST_FILE_CHOOSE_CODE) {
+                onScannerResult(resultCode, data);
 
-            onFileChooseResult(resultCode, data);
-        } else if (requestCode == REQUEST_SELECT_CONTACT_CODE) {
+            } else if (requestCode == REQUEST_CAMERA_CODE) {
 
-            onSelectContactResult(resultCode, data);
-        }
+                onCameraResult(resultCode, data);
+            } else if (requestCode == REQUEST_PHOTO_LIBRARY_CODE) {
 
-        mCurrentActionString = null;
-        super.onActivityResult(requestCode, resultCode, data);
+                onPhotoLibraryResult(resultCode, data);
+            } else if (requestCode == REQUEST_SIGNATURE_CODE) {
+
+                onSignatureResult(resultCode, data);
+            } else if (requestCode == REQUEST_FILE_CHOOSE_CODE) {
+
+                onFileChooseResult(resultCode, data);
+            } else if (requestCode == REQUEST_SELECT_CONTACT_CODE) {
+
+                onSelectContactResult(resultCode, data);
+            }
+
+            mCurrentActionString = null;
+        } else {
+
+            // webView还未加载完,此时需要延后执行
+            new Handler().postDelayed(new Runnable() {
+                @Override
+                public void run() {
+
+                    handleResult(requestCode, resultCode, data);
+                }
+            }, 1000);
+        }
     }
 
     private void saveExcuteJS(String js) {
@@ -532,9 +561,7 @@ public class MainActivity extends AppCompatActivity implements RAWebView.WebView
         RAUtil.alertMessage(self,getString(R.string.ra_title_warning),getString(R.string.method_not_found));
     }
 
-    /**
-     * Result
-     * */
+    // region Result
 
     private void onScannerResult(int resultCode, Intent data) {
 
@@ -716,6 +743,8 @@ public class MainActivity extends AppCompatActivity implements RAWebView.WebView
         }
     }
 
+    // endregion
+
     /**
      * Private Action
      * */
@@ -732,9 +761,8 @@ public class MainActivity extends AppCompatActivity implements RAWebView.WebView
         CameraHelper.pickImageFromAlbum2(self, REQUEST_PHOTO_LIBRARY_CODE);
     }
 
-    /**
-     * Action
-     * */
+
+    // region WebView Action
     private RAJSInterface.RAJSInterfaceDelegate mActionHandler = new RAJSInterface.RAJSInterfaceDelegate() {
         @Override
         public void CamScan(String msg) {
@@ -1214,7 +1242,9 @@ public class MainActivity extends AppCompatActivity implements RAWebView.WebView
         return FileManager.base64StringFromFile(path);
     }
 
-    // region Loac Callback
+    // endregion
+
+    // region Local Callback
 
     private boolean initialize = false; // 首页加载完成
     private boolean error = false;