요즘 회사에서 WebView 이슈로 여러 번 앱 업데이트를 하고 있는데요. 이번 글의 주제는 WebView의 Alert가 안 나오는 이슈가 있어서 알아보게 되었습니다. 이번 글에서는 WebView의 Alert를 표시하는 방법에 대해서 소개해보려고 합니다. Alert가 안 나온다면 //문제의 코드 override fun onJsAlert( view: WebView, url: String, message: String, result: JsResult ): Boolean { return true } 저처럼 Alert가 표시되지 않는 이슈를 겪고 있으시다면 WebChromeClient의 onJsAlert 함수에서 아무 처리도 하지 않고 그냥 true를 반환하고 있는지 확인해 보세요 onJsAlert 정의를 따라..
안녕하세요 이번 글은 Android WebView에서 파일을 업로드하는 방법에 대해서 소개해보려고 합니다. 이번 주제는 Android WebView는 별도 처리 없이는 웹 사이트의 파일 업로드 기능을 사용할 수 없기 때문입니다. 문제 상황 @SuppressLint("SetJavaScriptEnabled") @Composable fun UploadWebViewScreen() { // File Upload HTML을 사용 val state = rememberWebViewStateWithHTMLData( """ Click on the "Choose File" button to upload a file: """.trimIndent() ) val context = LocalContext.current WebVie..
안녕하세요. 오늘은 WebView를 구현한 앱에서 발생하는 이상한 오류에 대해 알아보고 어떻게 해결해야 하는지 짧게 알아보려고 합니다. WebView Crash? 최근 앱에서 PlayStore에 알 수 없는 Crash 제보가 수십 건 올라오기 시작했습니다. 위 사진이 제보되던 Crash의 스택 트레이스입니다. 처음에는 생소한 단어들과 처음 보는 클래스 이름 때문에 원인을 특정하기 어려웠으나 곧 WebView 내부에서 발생하는 Crash라는 것을 알게 되었습니다. WebView Crash 재현하기 위 오류는 WebView Render Process 과정에서 발생한 Crash입니다. 오류를 하기 위해서는 재현 경로를 알아야 하는데요. 다행히도 Rendenr Process에서 Crash가 발생하도록 하는 재현..
안녕하세요 점냥입니다 :) 요즘 특정 화면을 WebView로 대체하는 경우가 종종 생기고 있어요. 실제로 앱 개발자의 역할은 대부분 올바른 URL을 설정해 주고 간단한 기본 설정을 해주면 됩니다. 그런데 만약 WebView에서 유튜브 영상 또는 비디오를 보여주고 싶다면 추가적으로 앱 개발자가 해줘야 하는 설정이 있어요. 한번 알아보러 가실까요? 문제 상황 @SuppressLint("SetJavaScriptEnabled") @Composable fun YouTubeInWebViewScreen() { val state = rememberWebViewState("https://www.youtube.com/embed/OK986vgCMs8") WebView( state = state, modifier = Modi..