2016-03-31 20 views
3

私はReact Nativeのwebviewコンポーネントを持っています。 WebViewが入力タイプをサポートしなければならないファイルであるので、私はとしてそれを実行します。ReactネイティブonActivityResultが機能しない

File Upload in WebView

とWebViewがActivityEventListenerを実装し、onActivityResultが動作していないonActivityResult.Butオーバーライドします。

コード

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

また、rn 27.0.2とAndroid Marshmallow(6.0.1) - Nexus 5ではonActivityResultが呼び出されないという問題があります。 – SudoPlz

答えて

6

は多分遅く、それが役に立てば幸いです。

ネイティブモジュールのonActivityResultは0.29でReactActivityによって呼び出されReactInstanceManagerImplによって呼び出されReactContextによって呼び出されます。上記の例では、MyWbはアクティビティがReactActivityでないため、ReactInstanceManagerImplは呼び出されません。

解決策は、自分のReactInstanceManagerオブジェクト参照を既に持っているので、アクティビティのonActivityResultonActivityResultのコールだけです。

+0

これは私が必要なものです!ありがとうございました。私はRN 0.33.1を使用しています。これを見つけるために二日の頭を悩ました。 – Gagege