Fix bugs when selecting a file crash when a webview widget is reopened
This commit is contained in:
parent
fead4fb247
commit
ffb36fa966
|
@ -1,6 +1,8 @@
|
|||
package com.pichillilorenzo.flutter_inappbrowser;
|
||||
|
||||
import android.net.Uri;
|
||||
import android.os.Build;
|
||||
import android.webkit.ValueCallback;
|
||||
|
||||
import io.flutter.plugin.common.MethodChannel;
|
||||
import io.flutter.plugin.common.PluginRegistry;
|
||||
|
@ -15,6 +17,8 @@ public class InAppBrowserFlutterPlugin implements FlutterPlugin {
|
|||
public static InAppBrowser inAppBrowser;
|
||||
public static MyCookieManager myCookieManager;
|
||||
public static CredentialDatabaseHandler credentialDatabaseHandler;
|
||||
public static ValueCallback<Uri[]> uploadMessageArray;
|
||||
|
||||
|
||||
public InAppBrowserFlutterPlugin() {}
|
||||
|
||||
|
@ -61,5 +65,6 @@ public class InAppBrowserFlutterPlugin implements FlutterPlugin {
|
|||
credentialDatabaseHandler.dispose();
|
||||
credentialDatabaseHandler = null;
|
||||
}
|
||||
uploadMessageArray = null;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -44,7 +44,6 @@ public class InAppWebChromeClient extends WebChromeClient implements PluginRegis
|
|||
private PluginRegistry.Registrar registrar;
|
||||
private FlutterWebView flutterWebView;
|
||||
private InAppBrowserActivity inAppBrowserActivity;
|
||||
private ValueCallback<Uri[]> mUploadMessageArray;
|
||||
private ValueCallback<Uri> mUploadMessage;
|
||||
private final static int FILECHOOSER_RESULTCODE = 1;
|
||||
|
||||
|
@ -520,7 +519,7 @@ public class InAppWebChromeClient extends WebChromeClient implements PluginRegis
|
|||
public boolean onShowFileChooser(
|
||||
WebView webView, ValueCallback<Uri[]> filePathCallback,
|
||||
FileChooserParams fileChooserParams) {
|
||||
mUploadMessageArray = filePathCallback;
|
||||
InAppBrowserFlutterPlugin.uploadMessageArray = filePathCallback;
|
||||
try {
|
||||
Intent contentSelectionIntent = new Intent(Intent.ACTION_GET_CONTENT);
|
||||
contentSelectionIntent.addCategory(Intent.CATEGORY_OPENABLE);
|
||||
|
@ -543,10 +542,10 @@ public class InAppWebChromeClient extends WebChromeClient implements PluginRegis
|
|||
@TargetApi(Build.VERSION_CODES.LOLLIPOP)
|
||||
@Override
|
||||
public boolean onActivityResult(int requestCode, int resultCode, Intent data) {
|
||||
if (requestCode == FILECHOOSER_RESULTCODE && (resultCode == RESULT_OK || resultCode == RESULT_CANCELED)) {
|
||||
mUploadMessageArray.onReceiveValue(WebChromeClient.FileChooserParams.parseResult(resultCode, data));
|
||||
if (requestCode == FILECHOOSER_RESULTCODE && (resultCode == RESULT_OK || resultCode == RESULT_CANCELED) && InAppBrowserFlutterPlugin.uploadMessageArray != null) {
|
||||
InAppBrowserFlutterPlugin.uploadMessageArray.onReceiveValue(WebChromeClient.FileChooserParams.parseResult(resultCode, data));
|
||||
}
|
||||
return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
private MethodChannel getChannel() {
|
||||
|
|
Loading…
Reference in New Issue