AgentWeb 이 Kotlin 개발 사용 중 WebView 가 나타 난 onPageStarted 에서 favicon 이 비어 서 붕 괴 됩 니 다.
9643 단어 안 드 로 이 드 노트
IllegalArgumentException: Parameter specified as non-null is null: method kotlin.jvm.internal.Intrinsics.checkParameterIsNotNull, parameter favicon
문제 가 발생 했 으 며 자바 언어 에 서 는 붕괴 되 지 않 습 니 다. // AgentWeb
mAgentWeb = AgentWeb.with(this)
.setAgentWebParent(
mLinearLayout, LinearLayout.LayoutParams(
ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT
)
)
.useDefaultIndicator()
.setWebChromeClient(mWebChromeClient)
.setWebViewClient(mWebViewClient)// !!!!!!!!
.setMainFrameErrorView(R.layout.agentweb_error_page, -1)
.setSecurityType(AgentWeb.SecurityType.STRICT_CHECK)
.setOpenOtherPageWays(DefaultWebClient.OpenOtherPageWays.ASK)// ,
.interceptUnkownUrl() // Scheme
.createAgentWeb()
.ready()
.go("http://www.google.com")
WebActivity
바로 무 너 집 니 다.오류 로 그 는 다음 과 같 습 니 다java.lang.IllegalArgumentException: Parameter specified as non-null is null: method kotlin.jvm.internal.Intrinsics.checkParameterIsNotNull, parameter favicon
at com.zhiwei.services.webapp.BaseWebActivity$mWebViewClient$1.onPageStarted(Unknown Source:12)
at com.just.agentweb.WebViewClientDelegate.onPageStarted(WebViewClientDelegate.java:80)
at com.just.agentweb.DefaultWebClient.onPageStarted(DefaultWebClient.java:466)
at xq.b(SourceFile:219)
at alW.handleMessage(SourceFile:20)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:193)
문 제 는onPagestarted
함수 에서favicon
필드 가 비어 있 고 kotlin 자체 호출 시 비 어 있 는 데이터 로 표시 되 어 있 으 며 지금 은 비어 있 기 때문에 붕 괴 를 일 으 킵 니 다.setWebViewClient
이 필요 하 다 면 하나setWebViewClient
.setWEbViewClient(mWebViewClient)
.useMiddlewareWebClient(object:MiddlewareWebClientBase(){
// , ,
override fun onPageStarted(view: WebView?, url: String?, favicon: Bitmap?) {
// bitmap, favicon ,
val ff = favicon ?: ImageUtils.drawable2Bitmap(AppUtils.getAppIcon())
super.onPageStarted(view, url, ff)
}
})
useMiddlewareWebClient
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
// favicon ,defaultWebClient Activity
// Activity resource, bitmap faicon,
// WebIconDatabase.getInstance().open(getDir("icons", MODE_PRIVATE).getPath()); web
if (!mWaittingFinishSet.contains(url)) {
mWaittingFinishSet.add(url);
}
super.onPageStarted(view, url, favicon);
}
DefaultWebClient
유형 이 있 으 면 비 어 있 는 것 으로 단정 되 기 때문에 전달 하 는 값 이bitmap:Bitmap?
값 이면 붕 괴 됩 니 다.자바 의null
표기 와 유사 한 반면null
의@NonNull
,AgentWeb
의DefaultWebClient
함 수 는 모두WebViewClientdelegate
파일 로 그 안에 하지 않 은onPageStarted
비공 식 판단 이다.(안 드 로 이 드 웹 뷰 의 문제 인 것 같 습 니 다.