Android Study
WebView에서 파일 업로드(이미지) 버튼 이벤트 안될때
85chong
2019. 12. 13. 17:44
728x90
* 웹뷰에서의 작업환경은 어떤 상태인지 확인하지 못함
하이브리드 작업중 발생한 문제를 아래와 같이 해결하여서 기록함.
ValueCallback mFilePathCallback;
......
//webview 안에 아래와 같이 chomeclient 셋팅 해주는 부분이 있을것임 아래와 같이 해줌
webView.setWebChromeClient(new WebChromeClient(){
@Override
public boolean onShowFileChooser(WebView webView, ValueCallback filePathCallback, FileChooserParams fileChooserParams) {
mFilePathCallback = filePathCallback;
Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
intent.addCategory(Intent.CATEGORY_OPENABLE);
intent.setType("image/*");
startActivityForResult(intent, 0);
return true;
}
});
// 아래와 같이 파일 선택후의 작업도 해준다.
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
Log.e("resultCode:: ", String.valueOf(resultCode));
if(requestCode == 0 && resultCode == Activity.RESULT_OK){
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
mFilePathCallback.onReceiveValue(WebChromeClient.FileChooserParams.parseResult(resultCode, data));
}else{
mFilePathCallback.onReceiveValue(new Uri[]{data.getData()});
}
mFilePathCallback = null;
}else{
mFilePathCallback.onReceiveValue(null);
}
}
//위와같이 하면 안드로이드 자체의 이미지 파일 선택하는 기본 Intent 가 자동으로 뜨고, 이미지를 선택하면 , 해당 웹뷰 안에 파일이 첨부가 된다.
//위의 방법말고, 선택시 onShowFileChooser( )로 이벤트를 받고, 앱에 있는 파일업로드 등의 기능을 사용하는 방법도 있지만, 복잡하다.