0

내 Android 앱이 WebView에 JS 코드를 주입합니다. 그것은 안드로이드 3.1 대상이지만 안드로이드 6과 7 때문에 WebView는 크롬 내부에 있으므로 이전 WebView가 아니기 때문에 문제가 발생했습니다. 대상이 Android 3.1 인 경우 Android Chromium WebView에서 JavaScript 주입이 작동하지 않습니다.

그럼에도 불구하고 문제는 그래서 그것을 때문에 쿼크 모드로 생각하지 않는다 아주 이상한 내 응용 프로그램 안드로이드 6 힘과 7. 내 애플 바인딩을 생성하는 JS 인터페이스를로드 할 수있는 모든 유용한 전화를 사용

Java 코드와 JS 코드 사이에 존재하며 이전 버전에서 작동합니다. ,

webView.loadData("", "text/html", null); 

상기 "페이지"가로드 될 때, 실제 URL의로드를 수행하는 : 이 지시 한 후 (addJavascriptInterface() 메소드)는로드 된 JS 인터페이스를 보장하기 위해 "위조"로딩을 수행 그것은 로컬 파일입니다 (file : /// ...); 이 스크립트가로드되면 스크립트가 삽입되어 실행됩니다.

Cannot call determinedVisibility() - never saw a connection for the pid: 

나는 다양한 제안 SO 이것에 대해 발견했지만, 어떤 성공 :

이 "는 없습니다

내가 경험하는 것은 내가 계속 로그 고양이에 다음과 같은 오류를 얻을 수 있다는 것입니다 data : text/html "url은 몇 번이고 계속로드되며 빈 URL로드 만 중지 할 수 있지만 JS 인터페이스는 손실됩니다.

JS 인터페이스를 유지하고 무한로드 루프를 차단하려면 어떻게해야합니까?

답변

0

이러한 종류의 문제는 JS 인터페이스 (필요한 경우)를 WebView에 효과적으로 추가하기위한 첫 번째 "가짜"호출을 변경함으로써 수정되었습니다. 이 명령에

위에서 언급 한 방법

:

webView.loadData("", "text/html", null); 

은 안드로이드 6.x에서보다 오래된 버전 일 (이 4.4 5.x의에도 실패 할 수 있도록이 장치에 따라 달라질 수 있습니다, 하지만 내 애플 리케이션 모두에서 일했다).

그래서 모든 버전에서 작업 올바른 방법은 (첫 번째가 완료되면 새로운 로딩을 수행), 두 번

을 대상 파일을로드하는 것입니다 또는 간단한 HTML처럼 (다른 파일을로드 할 수도 있습니다 본문에 내용이없는 경우) 먼저 대상 파일을로드하십시오 (첫 번째로드가 완료되면).