WebView 파일 업로드 취소 팝업 이후 응답하지 않음 이벤트 다시 클릭
webview.setWebChromeClient(new WebChromeClient() {
// For Android < 3.0
public void openFileChooser(ValueCallback valueCallback) {
***
}
// For Android >= 3.0
public void openFileChooser(ValueCallback valueCallback, String acceptType) {
***
}
//For Android >= 4.1
public void openFileChooser(ValueCallback valueCallback,
String acceptType, String capture) {
***
}
// For Android >= 5.0
@Override
public boolean onShowFileChooser(WebView webView,
ValueCallback filePathCallback,
WebChromeClient.FileChooserParams fileChooserParams) {
***
return true;
}
});
파일 선택 완료 후 콜백, 사진 업로드의 예
/***
*
* @param list
*/
public void setChooseFile(ArrayList list) {
KLog.e(TAG, "webfragment :" + list.size());
Uri[] results = null;
Uri uriResult = null;
if (null != list && list.size() > 0) {
TImage tImage = list.get(0);
//
String compressPath = tImage.getCompressPath();
results = new Uri[]{Uri.fromFile(new File(compressPath))};
uriResult = Uri.fromFile(new File(compressPath));
}
if (null != uploadMessageAboveL) {
uploadMessageAboveL.onReceiveValue(results);
} else if (null != mValueCallback) {
mValueCallback.onReceiveValue(uriResult);
}
}
그러나 때때로 우리는 업로드 버튼을 눌렀지만 어떤 파일도 업로드하지 않고 종료할 때가 있다. 이때 업로드 버튼을 다시 눌러서 파일을 선택할 수 있는 팝업 창을 표시하지 않는다. (예를 들어 사진을 올릴 때 앨범에서 선택하거나 사진으로 얻은 다이아로그를 표시하지 않는다) 해결 방법은 다음과 같다. 선택한 파일의 리셋을 모두null로 설정한다.
/***
*
*
*/
public void cancleChooseFileDialog() {
if (null != uploadMessageAboveL) {
uploadMessageAboveL.onReceiveValue(null);
uploadMessageAboveL = null;
}
if (null != mValueCallback) {
mValueCallback.onReceiveValue(null);
mValueCallback = null;
}
}
이 방법은 다이얼로그의 cancle 리셋에서 호출합니다. 또한 이 다이얼로그를 cancle만 누르면 취소되는 모드로 설정하십시오. 그렇지 않으면 다이얼로그 이외의 부분을 누르면 다이얼로그가 사라지지만 이 리셋은 실행되지 않습니다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.