gpt4 book ai didi

android - React Native onActivityResult 不起作用

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:45:08 25 4
gpt4 key购买 nike

我有一个 React Native 的 webview 组件。 webview 应该支持输入类型是文件,所以我这样做:

File Upload in WebView

并且 webview 实现了 ActivityEventListener 并覆盖了 onActivityResult。但是 onActivityResult 不工作。

代码是

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);
}

}

最佳答案

也许晚了希望它有所帮助。

native 模块的 onActivityResultReactContext 调用,由 ReactInstanceManagerImpl 调用,在 0.29 中由 ReactActivity 调用.在上面的示例中,MyWb 扩展了 Activity 而不是 ReactActivity,因此永远不会调用 ReactInstanceManagerImpl

解决方案就在您的 Activity 的 onActivityResult 调用 ReactInstanceManageronActivityResult 中,因为您已经拥有自己的 ReactInstanceManager 对象引用。

你从中启动 React Native 的 Activity 应该有一个像这样的覆盖:

// Manually pass along the `onActivityResult` event to React Native event listeners.
// We are not extending from `ReactActivity` so we need to do this manually.
//
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {

mReactInstanceManager.onActivityResult( this, requestCode, resultCode, data );

}

关于android - React Native onActivityResult 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36335484/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com