sha*_*iao 5 android webview react-native
我有一个React Native的webview组件.webview应该支持输入类型是文件,所以我这样做:
并且webview实现ActivityEventListener并覆盖onActivityResult.But 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);
}
}
Run Code Online (Sandbox Code Playgroud)
osc*_*cat 12
也许迟到希望它有所帮助.
本机模块的onActivityResult调用由ReactContext被称为通过ReactInstanceManagerImpl其在0.29被称为ReactActivity.在上面的示例中,不MyWb扩展Activity ReactActivity,因此ReactInstanceManagerImpl永远不会调用.
解决方案就在您的活动onActivityResult调用中ReactInstanceManager, onActivityResult因为您已经拥有自己的ReactInstanceManager对象引用.
您正在启动React Native的活动应该具有如下覆盖:
// 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 );
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3562 次 |
| 最近记录: |