Commit ffb36fa9 authored by crazecoder's avatar crazecoder

Fix bugs when selecting a file crash when a webview widget is reopened

parent fead4fb2
package com.pichillilorenzo.flutter_inappbrowser; package com.pichillilorenzo.flutter_inappbrowser;
import android.net.Uri;
import android.os.Build; import android.os.Build;
import android.webkit.ValueCallback;
import io.flutter.plugin.common.MethodChannel; import io.flutter.plugin.common.MethodChannel;
import io.flutter.plugin.common.PluginRegistry; import io.flutter.plugin.common.PluginRegistry;
...@@ -15,6 +17,8 @@ public class InAppBrowserFlutterPlugin implements FlutterPlugin { ...@@ -15,6 +17,8 @@ public class InAppBrowserFlutterPlugin implements FlutterPlugin {
public static InAppBrowser inAppBrowser; public static InAppBrowser inAppBrowser;
public static MyCookieManager myCookieManager; public static MyCookieManager myCookieManager;
public static CredentialDatabaseHandler credentialDatabaseHandler; public static CredentialDatabaseHandler credentialDatabaseHandler;
public static ValueCallback<Uri[]> uploadMessageArray;
public InAppBrowserFlutterPlugin() {} public InAppBrowserFlutterPlugin() {}
...@@ -61,5 +65,6 @@ public class InAppBrowserFlutterPlugin implements FlutterPlugin { ...@@ -61,5 +65,6 @@ public class InAppBrowserFlutterPlugin implements FlutterPlugin {
credentialDatabaseHandler.dispose(); credentialDatabaseHandler.dispose();
credentialDatabaseHandler = null; credentialDatabaseHandler = null;
} }
uploadMessageArray = null;
} }
} }
...@@ -44,7 +44,6 @@ public class InAppWebChromeClient extends WebChromeClient implements PluginRegis ...@@ -44,7 +44,6 @@ public class InAppWebChromeClient extends WebChromeClient implements PluginRegis
private PluginRegistry.Registrar registrar; private PluginRegistry.Registrar registrar;
private FlutterWebView flutterWebView; private FlutterWebView flutterWebView;
private InAppBrowserActivity inAppBrowserActivity; private InAppBrowserActivity inAppBrowserActivity;
private ValueCallback<Uri[]> mUploadMessageArray;
private ValueCallback<Uri> mUploadMessage; private ValueCallback<Uri> mUploadMessage;
private final static int FILECHOOSER_RESULTCODE = 1; private final static int FILECHOOSER_RESULTCODE = 1;
...@@ -520,7 +519,7 @@ public class InAppWebChromeClient extends WebChromeClient implements PluginRegis ...@@ -520,7 +519,7 @@ public class InAppWebChromeClient extends WebChromeClient implements PluginRegis
public boolean onShowFileChooser( public boolean onShowFileChooser(
WebView webView, ValueCallback<Uri[]> filePathCallback, WebView webView, ValueCallback<Uri[]> filePathCallback,
FileChooserParams fileChooserParams) { FileChooserParams fileChooserParams) {
mUploadMessageArray = filePathCallback; InAppBrowserFlutterPlugin.uploadMessageArray = filePathCallback;
try { try {
Intent contentSelectionIntent = new Intent(Intent.ACTION_GET_CONTENT); Intent contentSelectionIntent = new Intent(Intent.ACTION_GET_CONTENT);
contentSelectionIntent.addCategory(Intent.CATEGORY_OPENABLE); contentSelectionIntent.addCategory(Intent.CATEGORY_OPENABLE);
...@@ -543,10 +542,10 @@ public class InAppWebChromeClient extends WebChromeClient implements PluginRegis ...@@ -543,10 +542,10 @@ public class InAppWebChromeClient extends WebChromeClient implements PluginRegis
@TargetApi(Build.VERSION_CODES.LOLLIPOP) @TargetApi(Build.VERSION_CODES.LOLLIPOP)
@Override @Override
public boolean onActivityResult(int requestCode, int resultCode, Intent data) { public boolean onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == FILECHOOSER_RESULTCODE && (resultCode == RESULT_OK || resultCode == RESULT_CANCELED)) { if (requestCode == FILECHOOSER_RESULTCODE && (resultCode == RESULT_OK || resultCode == RESULT_CANCELED) && InAppBrowserFlutterPlugin.uploadMessageArray != null) {
mUploadMessageArray.onReceiveValue(WebChromeClient.FileChooserParams.parseResult(resultCode, data)); InAppBrowserFlutterPlugin.uploadMessageArray.onReceiveValue(WebChromeClient.FileChooserParams.parseResult(resultCode, data));
} }
return false; return true;
} }
private MethodChannel getChannel() { private MethodChannel getChannel() {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment