Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up

🌏 WebView 全方面使用,JS交互、进度条、上传图片、错误页面、视频全屏播放、唤起原生App、获取网页源代码、被作为第三方浏览器打开、DeepLink、[腾讯x5使用示例]

License

NotificationsYou must be signed in to change notification settings

youlookwhat/ByWebView

Repository files navigation

JitPackAPIdownload

Features

  • 基本配置使用(宽度自适应、返回网页上一层、显示网页标题等)
  • 唤起三方应用(拨打电话、发送短信、发送邮件等)
  • 上传图片(版本兼容)
  • 错误页面处理
  • 全屏播放网络视频
  • 与Js交互实例
  • 优雅的进度条显示控件

Demo示例:

  • DeepLink的基本使用
  • 被作为第三方浏览器打开
  • 与ToolBar联动,自定义WebView
  • 腾讯x5使用示例

Document

Screenshots

bywebview

Download

引用

  1. Add the JitPack repository to your build file
allprojects {repositories {   ...maven {url'https://jitpack.io' }   }}
  1. Add the dependency:
dependencies {implementation'com.github.youlookwhat:ByWebView:1.2.1'}

Use

byWebView =ByWebView        .with(this)        .setWebParent(container,newLinearLayout.LayoutParams(-1, -1))        .useWebProgress(ContextCompat.getColor(this,R.color.coloRed))        .loadUrl(mUrl);

与Js交互

  • 调用Js方法:
// 无参数调用byWebView.getLoadJsHolder().quickCallJs("javacalljs");// 传递参数调用byWebView.getLoadJsHolder().quickCallJs("javacalljswithargs","android传入到网页里的数据,有参");
  • Js调用Java方法:
ByWebView.with(this).addJavascriptInterface("injectedObject",newMyJavascriptInterface(this)).loadUrl(mUrl);window.injectedObject.startFunction()

生命周期处理

@OverrideprotectedvoidonPause() {super.onPause();byWebView.onPause();}@OverrideprotectedvoidonResume() {super.onResume();byWebView.onResume();}@OverrideprotectedvoidonDestroy() {byWebView.onDestroy();super.onDestroy();}

返回操作

@OverridepublicbooleanonKeyDown(intkeyCode,KeyEventevent) {if (byWebView.handleKeyEvent(keyCode,event)) {returntrue;    }else {returnsuper.onKeyDown(keyCode,event);    }}

上传图片之后的回调

@OverrideprotectedvoidonActivityResult(intrequestCode,intresultCode,Intentintent) {byWebView.handleFileChooser(requestCode,resultCode,intent);}

监听 标题、进度条、WebViewClient

byWebView =ByWebView        .with(this)        .setWebParent(container,newLinearLayout.LayoutParams(-1, -1))        .useWebProgress(ContextCompat.getColor(this,R.color.coloRed))        .setOnTitleProgressCallback(onTitleProgressCallback)        .setOnByWebClientCallback(onByWebClientCallback)        .addJavascriptInterface("injectedObject",newMyJavascriptInterface(this))        .loadUrl(mUrl);
privateOnTitleProgressCallbackonTitleProgressCallback =newOnTitleProgressCallback() {@OverridepublicvoidonReceivedTitle(Stringtitle) {Log.e("---title",title);    }@OverridepublicvoidonProgressChanged(intnewProgress) {// 返回的进度    }@OverridepublicbooleanonHandleScreenOrientation(booleanisShow) {// 返回true,视频全屏时,横竖屏自己处理returnfalse;    }};privateOnByWebClientCallbackonByWebClientCallback =newOnByWebClientCallback() {@OverridepublicvoidonPageStarted(WebViewview,Stringurl,Bitmapfavicon) {            }@OverridepublicbooleanonReceivedSslError(WebViewview,SslErrorHandlerhandler,SslErrorerror) {// 如果自己处理,需要返回truereturnsuper.onReceivedSslError(view,handler,error);    }@OverridepublicvoidonPageFinished(WebViewview,Stringurl) {// 网页加载完成后的回调    }@OverridepublicbooleanisOpenThirdApp(Stringurl) {// 处理三方链接Log.e("---url",url);returnByWebTools.handleThirdApp(ByWebViewActivity.this,url);    }};

自定义错误页面

ByWebView.with(this).setErrorLayout(R.layout.by_load_url_error,"无法打开网页").loadUrl(mUrl);

完整设置

byWebView =ByWebView        .with(this)        .useWebProgress(true)// 是否使用进度条,默认true,如使用可不用配置        .setWebParent(container,newLinearLayout.LayoutParams(-1, -1))// 设置WebView父容器        .useWebProgress("#ffb6cf","#ff0000",3)// 进度条渐变色(开始颜色,结束颜色,高度)        .setOnTitleProgressCallback(onTitleProgressCallback)// title 和 progress 监听        .setOnByWebClientCallback(onByWebClientCallback)// WebViewClient监听        .setErrorLayout(R.layout.by_load_url_error,"无法打开网页")// 设置错误页面及标题        .addJavascriptInterface("injectedObject",newMyJavascriptInterface(this))// 设置Js监听        .loadUrl(mUrl);

Tip

  • 混淆时应加上(通过JS向网页传值,如不加有时候会传值失败):

    -keepattributes *Annotation*-keepattributes *JavascriptInterface*-keepclassmembersclass * {@android.webkit.JavascriptInterface <methods>;}

Thanks

Other

About

🌏 WebView 全方面使用,JS交互、进度条、上传图片、错误页面、视频全屏播放、唤起原生App、获取网页源代码、被作为第三方浏览器打开、DeepLink、[腾讯x5使用示例]

Topics

Resources

License

Stars

Watchers

Forks


[8]ページ先頭

©2009-2025 Movatter.jp