728x90
반응형
SMALL
* 웹뷰에서의 작업환경은 어떤 상태인지 확인하지 못함
하이브리드 작업중 발생한 문제를 아래와 같이 해결하여서 기록함.
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( )로 이벤트를 받고, 앱에 있는 파일업로드 등의 기능을 사용하는 방법도 있지만, 복잡하다.
'Android Study' 카테고리의 다른 글
안드로이드 Background 상태 체크하기 (0) | 2019.12.18 |
---|---|
현재 액티비티가 보여지고 있는것인지 확인하는 Activity 함수 (0) | 2019.12.18 |
Android notification 헤드업 Tip(channel 사용 버전만) (0) | 2019.11.12 |
안드로이드의 디자인 적용 원리 (0) | 2019.05.09 |
구글 드라이브를 이용한 다국어관리 하기! (0) | 2019.04.25 |