2023年11月28日发(作者:)

详细了解WebChromeClient源码各⽅法使⽤说明

摘要:

有⼏个定制功能⽅便添加开发者期待的属性。

1、创建并设置⼀个⼦类,该⼦类在想要改变浏览器的UI界⾯时回调对应的⽅法,⽐如,进度条的更新和JS弹窗

2、创建并设置⼀个⼦类,该⼦类在改变⽹页内容的呈现⽅式时回调对应的⽅法,⽐如,⽹页加载错误或提交表单,同时可以通过回调shouldOverrideUrlLoading()

⽅法拦截URL加载。

3、修改WebSettings,配置WebView各种属性,⽐如:开启JavaScript脚本功能,setJavaScripeEnabled(true)

4、调⽤addJavascriptInterface(Object,String)⽅法将Java对象注⼊WebView加载的页⾯,H5开发者通过JavaScript脚本访问Java对象提供的⽅法或属性。

⼀、详细分析WebChromeClient个回调⽅法

这是内部⼀个接⼝,由主机应⽤程序通知当前⽹页是否隐藏

1. public void onShowCustomView(View view, CustomViewCallback callback) {};

6.通知主机应⽤程序当前页⾯进⼊全屏模式,在全屏模式下的主机应⽤程序必须包含⽹页内容:video或其他特定的HTML标签,与是否视频全屏播放有关的回调⽅法

4. pdater quotaUpdater) {

5. // This default implementation passes the current quota back to WebCore.

6. // WebCore will interpret this that new quota was declined.

25.当没有正在播放视频时,video标签显⽰“提⽰”图⽚,使⽤的这个“提⽰”图⽚可以被video标签的属性指定。如果缺少该属性,使⽤默认“提⽰”图⽚,这个⽅

法运⾏ChromeClient提供默认的图⽚。

1. public View getVideoLoadingProgressView() {

2. return null;

27.

28. public abstract String getFilenameHint();

29.

30.

31. public abstract Intent createIntent();

32. }

⼆、WebChromeClient常见使⽤实例

6. egory(RY_OPENABLE);

7. e("*/*");

8. startActivityForResult(Chooser(intent, "选择⽂件"),

9. REQUEST_FILE_PICKER);

3. vityResult(requestCode, resultCode, intent);

4. if (requestCode == REQUEST_FILE_PICKER && mFilePathCallback != null) {

5. Uri result = intent == null || resultCode != RESULT_OK ? null

6. : a();