Jelajahi Sumber

added activityresult listener

Peter Thaler 7 tahun lalu
induk
melakukan
bac24d43a6

+ 9 - 2
android/src/main/java/com/flutter_webview_plugin/FlutterWebviewPlugin.java

@@ -3,6 +3,7 @@ package com.flutter_webview_plugin;
 
 import android.app.Activity;
 import android.content.Context;
+import android.content.Intent;
 import android.graphics.Point;
 import android.view.Display;
 import android.widget.FrameLayout;
@@ -17,7 +18,7 @@ import io.flutter.plugin.common.PluginRegistry;
 /**
  * FlutterWebviewPlugin
  */
-public class FlutterWebviewPlugin implements MethodCallHandler {
+public class FlutterWebviewPlugin implements MethodCallHandler, PluginRegistry.ActivityResultListener {
     private Activity activity;
     private WebviewManager webViewManager;
     static MethodChannel channel;
@@ -25,7 +26,8 @@ public class FlutterWebviewPlugin implements MethodCallHandler {
 
     public static void registerWith(PluginRegistry.Registrar registrar) {
         channel = new MethodChannel(registrar.messenger(), CHANNEL_NAME);
-        FlutterWebviewPlugin instance = new FlutterWebviewPlugin(registrar.activity());
+        final FlutterWebviewPlugin instance = new FlutterWebviewPlugin(registrar.activity());
+        registrar.addActivityResultListener(instance);
         channel.setMethodCallHandler(instance);
     }
 
@@ -163,4 +165,9 @@ public class FlutterWebviewPlugin implements MethodCallHandler {
         final float scale = context.getResources().getDisplayMetrics().density;
         return (int) (dp * scale + 0.5f);
     }
+
+    @Override
+    public boolean onActivityResult(int i, int i1, Intent intent) {
+        return webViewManager.resultHandler.handleResult(i, i1, intent);
+    }
 }

+ 9 - 6
android/src/main/java/com/flutter_webview_plugin/WebviewManager.java

@@ -32,15 +32,18 @@ class WebviewManager {
 
     @TargetApi(7)
     class ResultHandler {
-        public void handleResult(int requestCode, int resultCode, Intent intent){
+        public boolean handleResult(int requestCode, int resultCode, Intent intent){
             if(requestCode==FILECHOOSER_RESULTCODE)
             {
-                if (null == mUploadMessage) return;
-                Uri result = intent == null || resultCode != RESULT_OK ? null
-                        : intent.getData();
-                mUploadMessage.onReceiveValue(result);
-                mUploadMessage = null;
+                if (null != mUploadMessage) {
+                    Uri result = intent == null || resultCode != RESULT_OK ? null
+                            : intent.getData();
+                    mUploadMessage.onReceiveValue(result);
+                    mUploadMessage = null;
+                }
+                return true;
             }
+            return false;
         }
     }