[Flutter] InAppWebview - Chrome99이상일때 이상현상

메모하는 개발자·2022년 4월 22일
1

Flutter삽질방지

목록 보기
8/9
post-thumbnail

[문제현상]

Android Chrome99이상일때 잘못된 intent주소가 브라우징 되는 현상

[원인]

InAppWebViewClient.java 파일안에
shouldOverrideUrlLoading (){
... return request.isForMainFrame();
}

request.isForMainFrame()

  • ver 99 미만: true
  • ver 99 이상: false

[해결방안]

InAppWebViewClient.java 파일안에
shouldOverrideUrlLoading (){
... return request.isForMainFrame();
}
위에 return 부분을 예외처리 해주면된다!

[isForMainFramge은 뭘까?]

WebKit로부터 상속된 메소드.
iframe 혹은 subresources 일때 false
(참고) https://developer.android.com/reference/android/webkit/WebResourceRequest#isForMainFrame()

[해결을 위해 시도했던 내용들]

잘못된 intent주소일때 shouldIntercept가 호출되는줄 알고.. 다른방향으로 방안을 찾아봤었다ㅠㅠ

임의의 WebResourceResponse를 리턴하거나
임의의 JS, CSS를 리턴해도 로드가 계속되어 문제를 해결할 순 없었다.

2개의 댓글

comment-user-thumbnail
2022년 8월 11일

안녕하세요 혹시 예외처리를 어떤식으로 했는지 확인할 수 있을까요?

답글 달기
comment-user-thumbnail
2022년 8월 26일

안녕하세요. 저도 같은 문제로 고생하고 있는데 도움좀 받을 수 있을까요?

답글 달기