使文件输入在Android nativescript vue webview上工作 上VUE的完整解决方案。
我正在使用NativeScript Vue创建一个应用程序,并使用webview作为主要组件。在加载的网站中,有一个文件输入字段用于捕获相机输入 它在iOS设备上运行良好,但在Android上,输入字段不起作用 有人知道一个解决方案,使文件输入字段在Android webview上工作吗 我使用tns android版本:6.1.1 更新1 我在使用哪个平台?使文件输入在Android nativescript vue webview上工作 上VUE的完整解决方案。,android,nativescript,nativescript-vue,Android,Nativescript,Nativescript Vue,我正在使用NativeScript Vue创建一个应用程序,并使用webview作为主要组件。在加载的网站中,有一个文件输入字段用于捕获相机输入 它在iOS设备上运行良好,但在Android上,输入字段不起作用 有人知道一个解决方案,使文件输入字段在Android webview上工作吗 我使用tns android版本:6.1.1 更新1 我在使用哪个平台? 安卓 10.0 仿真器。像素3a 有关堆栈的详细信息: CLI:6.1.2 nodejs:v10.16.0 tns核心模块:tns
- 安卓
- 10.0
- 仿真器。像素3a
- CLI:6.1.2
- nodejs:v10.16.0
- tns核心模块:tns核心-modules@6.1.1
- 运行时: “tns安卓”:{ “版本”:“6.1.1” }, “tns ios”:{ “版本”:“6.1.0” }
- 插件:
<webview @loaded="onWebViewLoaded" :src="webViewSrc"
:builtInZoomControls="false"
:displayZoomControls="false"
:debugMode="true"
/>
目前,我正在努力使nativescript相机在拍照后正常工作(总是返回“已取消”)但我知道有一种方法可以使用FileChooserParams显示本机文件输入选择,但我也无法做到这一点,因为我在网上找到的最接近的解决方案是针对Java的,并且不确定如何将其转换为Javascript/Vue
还有什么想法吗?您必须扩展
android.webkit.WebChromeClient
并在nativeView
上分配相同的内容
您必须实现方法,使用Intent或其他方法处理文件选择。谢谢,但您对如何在NativeScript(Vue)上执行此操作有何想法?您可以参考下面的示例。谢谢。我尝试了很多东西,浏览了很多资料,想找到一个解决方案,但运气不好。看看我更新的原始帖子。你知道如何解决我的问题吗?只要用文件uri调用值回调,
ValueCallback.onReceiveValue(android.net.uri.fromFile(new java.io.file(imageAsset.android))代码>使用您的解决方案,我得到了这个错误:“java.lang.ClassCastException:android.net.Uri$hierarchycaluri不能强制转换为android.net.Uri[]”。
"@babel/core": "~7.1.0",
"@babel/preset-env": "~7.1.0",
"babel-loader": "~8.0.0",
"nativescript-dev-webpack": "~1.2.0",
"nativescript-vue-template-compiler": "~2.4.0",
"node-sass": "^4.7.1",
"vue-loader": "~15.4.0"
<webview @loaded="onWebViewLoaded" :src="webViewSrc"
:builtInZoomControls="false"
:displayZoomControls="false"
:debugMode="true"
/>
onShowFileChooser: function (WebView, ValueCallback, FileChooserParams) {
// FileChooserParams.createIntent()
camera.takePicture() // Using nativescript-camera
.then(function (imageAsset) {
console.log("Result is an image asset instance");
var image = new Image();
image.src = imageAsset;
console.log(image)
}).catch(function (err) {
console.log("Error -> " + err.message);
});
return false
}
});
let myWebChromeClient = new myWebChromeClientClass();
webView.android.setWebChromeClient(myWebChromeClient);