在 webview 中嵌入云雀客服的一些问题
1. Android 无法发送图片
由于 Android 本身的限制,在 webview 中上传文件需要自行重载 `openFileChooser()` 或者 `onShowFileChooser()` 方法
大致代码如下, 更完整的示例可以自行搜索 「安卓 webview 上传文件」
webview.setWebChromeClient(new WebChromeClient() {
// For Android < 3.0
public void openFileChooser(ValueCallback<Uri> valueCallback) {
uploadMessage = valueCallback;
openImageChooserActivity();
}
// For Android >= 3.0
public void openFileChooser(ValueCallback valueCallback, String acceptType) {
uploadMessage = valueCallback;
openImageChooserActivity();
}
//For Android >= 4.1
public void openFileChooser(ValueCallback<Uri> valueCallback, String acceptType, String capture) {
uploadMessage = valueCallback;
openImageChooserActivity();
}
// For Android >= 5.0
@Override
public boolean onShowFileChooser(WebView webView, ValueCallback<Uri[]> filePathCallback, WebChromeClient.FileChooserParams fileChooserParams) {
uploadMessageAboveL = filePathCallback;
openImageChooserActivity();
return true;
}
});
2. Android 上用户唤起软键盘后会遮挡输入框
为 activity 指定 `android:windowSoftInputMode` 即可,值可以为 `adjustPan` 或者 `adjustResize`
<activity
android:name=".MainActivity"
android:label="@string/app_name"
android:windowSoftInputMode="adjustPan">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
3. Vivo等手机留言界面提示无法发送
需要配置webview允许开启本地存储
webView.getSettings().setDomStorageEnabled(true);