Python技巧
网站建设
向Mysql插入Emoji表情时失败了,python代码报以下异常:InternalError: 1366
将MYSQL数据库从一台服务器移植到另一台服务器
MYSQL数据库常用操作命令
Centos7,Centos8防火墙相关的命令
Centos7+nginx下为域名免费安装ssl证书
Centos7.5+nginx布署python3+django WEB服务器
js/jQuery技巧
VPS推荐
域名申请
NameSilo域名注册的流程
构建安卓APP
Android Studio 如何修改 Package Name
Android使用WebView加载网站,无法上传图片的解决方法
Android使用WebView将H5网站打包成apk,如何去掉标题,如何更换应用图标
Android使用WebView加载网站,无法上传图片的解决方法
在编写过程中遇到很多问题,默认情况下android webview无法上传文件!也就是没有响应H5代码中的input上传文件方法,在pc段,当<input type="file" >被激发的时候,会自动弹出对话框要求你选择图片,来上传文件。但是在android中却没有反应,那么很明显,这个问题需要解决。
一,接下来我讲简单提供一下解决方案,先说一下思路 1.接收WebView打开文件选择器的通知 2.收到通知后,打开文件选择器等待用户选择需要上传的文件 3.在onActivityResult中得到用户选择的文件的Uri 4.然后把Uri传递给Html5 这样就完成了一次H5选择文件的过程,下面我把代码贴出来自习看一下 首先,WebView必须要支持JS交互,所以要打开JS交互 webview.getSettings().setJavaScriptEnabled(true);
二,当H5在调用上传文件的Api的时候,WebView会回调 openFileChooser和onShowFileChooser 方法来通知我们,我们这个时候要做的就是重写这个方法 需要注意的是这个方法在不同的Api上会回调不同行参方法 首先把函数调用所需的库导入: import androidx.appcompat.app.AppCompatActivity; import android.os.Build; import android.os.Bundle; import android.content.Intent; import android.net.Uri; import android.view.KeyEvent; import android.webkit.ValueCallback; import android.webkit.WebView; import android.webkit.WebViewClient; import android.webkit.WebChromeClient; import android.webkit.WebSettings; public class MainActivity extends AppCompatActivity { private WebView webview; private ValueCallback<Uri> valueCallback; private ValueCallback<Uri[]> valueCallbackArray; private final int REQUEST_CODE = 0x1010; private final static int RESULT_CODE = 0x1011;
三,当用户选择完文件后,会调用onActivityResult方法,我们重写并等待回调 @Override protected void onActivityResult(int requestCode, int resultCode, Intent intent) { super.onActivityResult(requestCode, resultCode, intent); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { if (requestCode == REQUEST_CODE) { if (valueCallbackArray == null) return; valueCallbackArray.onReceiveValue(WebChromeClient.FileChooserParams.parseResult(resultCode, intent)); valueCallbackArray = null; } } else if (requestCode == RESULT_CODE) { if (null == valueCallback) return; Uri result = intent == null || resultCode != RESULT_OK ? null : intent.getData(); valueCallback.onReceiveValue(result); valueCallback = null; } }
删除文章
展示文章
友情链接
生活小妙招
赚钱小秘籍
开心一刻