// Kotlinval myWebView: WebView =findViewById(R.id.webview);// 필수 세팅값myWebView.settings.javaScriptEnabled=true;myWebView.settings.javaScriptCanOpenWindowsAutomatically=true;myWebView.settings.domStorageEnabled=true;// optional 세팅값 myWebView.settings.builtInZoomControls=false;myWebView.settings.loadWithOverviewMode=true;myWebView.settings.useWideViewPort=true;myWebView.settings.databaseEnabled=true;myWebView.settings.cacheMode=WebSettings.LOAD_NO_CACHE;// android os versin 5.0 이상myWebView.mixedContentMode=WebSettings.MIXED_CONTENT_ALWAYS_ALLOW;// webView LayerType 설정myWebView.setLayerType(View.LAYER_TYPE_HARDWARE,null);// https 에서 이미지가 표시 안되는 이슈 처리 if (Build.VERSION.SDK_INT>=Build.VERSION.CODES.LOLLIPOP) { mixedContentMode =WebSettings.MIXED_CONTENT_ALWAYS_ALLOW}
안드로이드 갤러리 설정 가이드는 아래를 꼭 참고해주세요.
Android WebView에서 해피톡 웹채팅 v2 사진 요청시 처리
WebChromeClient의 onShowFileChooser() 메소드 내에서 파일 선택 처리
/* 이미지 전송을 위한 처리 */val chromeClient =object : WebChromeClient() {overridefunonShowFileChooser( webView: WebView?, filePathCallback: valueCallback<Array<Uri>>?, fileChooserParams: FileChooserParams? ): Boolean {/* * 이곳에 카메라 호출 및 갤러리 호출 작성 * filePathCallback.onReceiveValue(arrayOf(Uri)) 호출 * Uri = 디바이스 로컬 이미지 파일 Uri 값 * filePathCallback 은 재사용을 위해 반드시 onReceiveValue 호출하여야 함. * file 선택 없을 시 onReceiveValue(null)로 처리 */returntrue; }}
웹 클라이언트에서 카카오톡 및 네이버톡톡 호출시 window.open() 을 사용하기 때문에 안드로이드 WebViewClient 설정 확인이 필요합니다.
만약 WebViewClient 설정이 자사 앱내에서 사용되어야한다면 따로 분기 처리하셔서 개발하셔야합니다.
카메라, 사진앨범 권한 요청 Description 추가
- 프로젝트 내 info.plist 추가
- Information Property List 내 추가
- Privacy - Camera Usage Description 추가
- Privacy - Photo Library Usage Description 추가