2016-03-31 16 views
3

Ich habe eine Webview-Komponente von React Native. Der webview soll Eingabetyp ist Datei unterstützen, so dass ich es so:Reactive Native onActivityResult funktioniert nicht

File Upload in WebView

und der Webansicht implementiert ActivityEventListener und außer Kraft setzen onActivityResult.But die onActivityResult funktioniert nicht.

Der Kodex ist

class RNWebView extends WebView implements ActivityEventListener { 
     protected class GeoWebChromeClient extends WebChromeClient { 
      public boolean onShowFileChooser(WebView webView, ValueCallback<Uri[]> filePathCallback, FileChooserParams fileChooserParams) { 
      ... 
      mActivity.startActivityForResult(chooserIntent, INPUT_FILE_REQUEST_CODE); 
      return true; 
      } 
     } 

    public RNWebView(ReactContext reactContext, Activity activity) { 
     super(reactContext); 
     // Add the listener for `onActivityResult` 
     reactContext.addActivityEventListener(this); 
     ... 
    } 

@Override 
public void onActivityResult(final int requestCode, final int resultCode, final Intent intent) { 
    // Your logic here 
    Log.d("Tanck", "requestCode:" + requestCode + "----" + "resultCode:" + resultCode); 
} 

} 
+0

Ich habe auch ein Problem von onActivityResult nicht auf rn 27.0.2 und Android Marshmallow (6.0.1) - Nexus 5. – SudoPlz

Antwort

6

Vielleicht spät hoffe, es hilft.

nativen Moduls onActivityResult wird durch ReactContext genannt, die durch ReactInstanceManagerImpl, die in 0,29 genannt wird durch ReactActivity genannt wird. Im Beispiel oben MyWb verlängert Aktivität nicht ReactActivity, also ReactInstanceManagerImpl wird nie aufgerufen.

Die Lösung ist einfach in Ihrer Aktivität onActivityResult Anruf ReactInstanceManager ‚s onActivityResult da Sie bereits Ihren eigenen ReactInstanceManager Objektverweis haben.

+0

Das ist, was ich brauchte! Vielen Dank. Ich benutze RN 0.33.1. Ich habe zwei Tage Kopfschütteln gebraucht, um das zu finden. – Gagege