当前位置: 首页 > news >正文

医疗网站建设计划书网站seo收费

医疗网站建设计划书,网站seo收费,网站建设客户问题,学做招投标的网站目录 一、项目背景 1.1 需求 1.2 设备 1.3 解决方案 二、WebViewUpgrade 接入 2.1 支持版本 2.2 接入 2.2.1 导入项目(我使用的是这个) 2.2.2 implementation 2.3 使用 2.4 WebView 相关推荐 一、项目背景 1.1 需求 项目需要使用WebView加载合作方公司的Url(里面功…

目录

一、项目背景

1.1 需求

1.2 设备

1.3 解决方案

二、WebViewUpgrade 接入

2.1 支持版本

2.2 接入

2.2.1 导入项目(我使用的是这个)

2.2.2 implementation

2.3 使用

2.4 WebView

相关推荐


一、项目背景

1.1 需求

        项目需要使用WebView加载合作方公司的Url(里面功能比较多):

  1. 使用了ES6(ECMAScript 6.0(以下简称 ES6)是 JavaScript 语言的下一代标准,已经在 2015 年 6 月正式发布了(所以也被叫作ES2015))

  2. JavaScript 使用的函数,要求 chrome 最低版本是85。

        一系列原因导致WebView加载该链接报错,合作方那边因为某些原因,不想改变现有的代码实现等。需要我们自行解决,那就开整呗。

1.2 设备

  • Android 8.1, WebView 版本 60.xxxx.xxxx.xx(好吧,忘记版本了,页面打不开))

  • Android 8.1, WebView 版本 61.0.3163.98(页面打不开)

  • Android 11,  WebView 版本 83.0.4103.120(视频无法播放,厂商给的答复是不支持,具体原因没说)

查看版本号:

  1. 可以进入设置-开发者模式-Webview实现可以看到 Webview 内核版本号。

  2. adb 命令: adb shell pm dump com.android.webview|grep version

adb shell pm dump com.android.webview|grep versionversionCode=410412053 minSdk=21 targetSdk=30versionName=83.0.4103.120signatures=PackageSignatures{48d4530 version:3, signatures:[63b96fc5], past signatures:[]}

1.3 解决方案

1.腾讯X5内核,还是加载失败,以为是集成错误。特意使用微信打开该链接,也是加载失败。

2.更新安装包,因为内嵌WebView的是com.android.webview。

  • 2.1 下载了包名为 95.0.4638.50-463805003_minAPI21版本的包,进行覆盖安装->报错,提示签名文件不一致。

  • 2.2 下载com.android.google.weview_95.0.4638.74_APKPure,安装成功了,加载还是报错。而且在WebView实现->不可选择com.android.google.webview。

3.修改framework-res.apk中配置,允许WebView实现选择com.android.google.webview。这种操作不太合适2C,需要root权限,修改系统文件,一不留神就可能产生其他问题。

4.使用 WebViewUpgrade,这个还是比较强大的,对WebView内核进行升级。已解决低版本无法加载url、视频无法播放的问题。

二、WebViewUpgrade 接入

        WebViewUpgrade的创建者遇到的问题:华为机上因为WebView内核的Chromium版本低于107无法播放H265视频的情况,为了解决上述问题可以用JS实现H265播放,但是会比较卡,就想不能让WebView用应用内的APK作为内核。

2.1 支持版本

  • com.google.android.webview:122.0.6261.64

  • com.android.webview:113.0.5672.136

  • com.huawei.webview:14.0.0.331

  • com.android.chrome:122.0.6261.43

  • com.amazon.webview.chromium:118-5993-tv.5993.155.51

        当然,你也可以找到其他版本下载安装即可。例如 com.android.webview,我觉得113版本太高,那么你可以下载一个95版本的。或者你不想使用com.android.webview 改用com.google.android.webview也是可以的。

2.2 接入

2.2.1 导入项目(我使用的是这个)

        将Demo的core和download-source模块直接导入到自己项目,修改core中 implementation 'androidx.appcompat:appcompat:1.6.1'的版本。

2.2.2 implementation

implementation 'io.github.jonanorman.android.webviewup:core:0.1.0'// 不需要下载APK时使用
implementation 'io.github.jonanorman.android.webviewup:download-source:0.1.0'// 需要下载APK使用

        如果是低版本,可能会报错。core中 implementation 'androidx.appcompat:appcompat:1.6.1'的版本比较高,需要兼容的SDK版本也比较高。

解决方案:

  • 1.提高项目 SDK 版本。

  • 2.使用exclude。

以上两种方式都可以。

2.3 使用

      设置

    private void setWebView(){UpgradeInfo upgradeInfo = new UpgradeInfo("com.android.webview","113.0.5672.136","https://mirror.ghproxy.com/https://raw.githubusercontent.com/JonaNorman/ShareFile/main/com.android.webview_113.0.5672.13_armeabi-v7a.zip","网络");String  systemWebViewPackageName = WebViewUpgrade.getSystemWebViewPackageName();if (systemWebViewPackageName != null &&systemWebViewPackageName.equals(upgradeInfo.packageName)&& VersionUtils.compareVersion( WebViewUpgrade.getSystemWebViewPackageVersion(),upgradeInfo.versionName) >= 0) {//Toast.makeText(getApplicationContext(), "system webView is larger than the one to be upgraded, so there is no need to upgrade", Toast.LENGTH_LONG).show();return;}UpgradeSource upgradeSource = upgradeInfo.toUpgradeSource(RobotApplication.getInstance());if (upgradeSource == null) {return;}WebViewUpgrade.upgrade(upgradeSource);updateUpgradeWebViewStatus();}
}

这里我使用的是网络下载:

  • 包名:com.android.webview;

  • 版本号:113.0.5672.136

  • 下载内核地址:https://mirror.ghproxy.com/https://raw.githubusercontent.com/JonaNorman/ShareFile/main/com.android.webview_113.0.5672.13_armeabi-v7a.zip

    //更新状态private void updateUpgradeWebViewStatus() {if (WebViewUpgrade.isProcessing()) {LogUtils.e("WebVIewUpgrade","Upgrading...");} else if (WebViewUpgrade.isFailed()) {LogUtils.e("WebVIewUpgrade","Fail...");} else if (WebViewUpgrade.isCompleted()) {LogUtils.e("WebVIewUpgrade","complete...");}int process = (int) (WebViewUpgrade.getUpgradeProcess() * 100);LogUtils.e("WebVIewUpgrade","Processing:-----"+process + "%");Throwable throwable = WebViewUpgrade.getUpgradeError();if (throwable != null) {LogUtils.e("WebVIewUpgrade","Throwable.message:" + throwable.getMessage() + "\nstackTrace:" + Log.getStackTraceString(throwable));}}
public class UpgradeInfo {public String title;public String url;public String packageName;public String versionName;public String extraInfo;public UpgradeInfo(String packageName, String versionName, String url, String extraInfo) {this.title = packageName + "\n" + versionName;this.extraInfo = !TextUtils.isEmpty(extraInfo) ? extraInfo : "";if (!extraInfo.isEmpty()) {this.title = this.title + "\n" + extraInfo;}this.url = url;this.packageName = packageName;this.versionName = versionName;}public UpgradeInfo(String packageName, String versionName, String url) {this(packageName, versionName, url, "");}@Nullablepublic UpgradeSource toUpgradeSource(Context context) {UpgradeSource upgradeSource = null;if (this.extraInfo.equals("网络")) {upgradeSource = new UpgradeDownloadSource(context,this.url,new File(context.getFilesDir(), this.packageName + "/" + this.versionName + ".apk"));} else if (this.extraInfo.equals("内置")) {upgradeSource = new UpgradeAssetSource(context,this.url,new File(context.getFilesDir(), this.packageName + "/" + this.versionName + ".apk"));} else if (this.extraInfo.equals("安装包")) {upgradeSource = new UpgradePackageSource(context,this.packageName);}return upgradeSource;}
public class MainActivity extends BaseActivity implements , UpgradeCallback {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setWebView();}private void setWebView(){......}//更新中@Overridepublic void onUpgradeProcess(float percent) {updateUpgradeWebViewStatus();}//更新完成@Overridepublic void onUpgradeComplete() {updateUpgradeWebViewStatus();}//更新失败@Overridepublic void onUpgradeError(Throwable throwable) {updateUpgradeWebViewStatus();}
}
        注意:这个代码尽量前置,如果无法前置,需要保证,其他地方先不要对WebView进行操作。如果操作了,会导致初始化失败。

        可以先试用Demo尝试功能是否可用,再集成到自己的项目中。

2.4 WebView

        执行完上面的操作后,你就正常操作WebView即可。上面我只是列举了网上下载的例子(第一次下载,只要文件存在,无需重复下载),还支持内置/安装包的形式,我这是应用包体太大,不适合内置。

        这种方式是可行的,但是也有一些小的前置条件需要注意,如果无法前置会导致使用失败。怎么前置才能做到万无一失,就需要根据实际情况来判断了。

相关推荐

Android System WebView 各版本下载地址(翻)icon-default.png?t=N7T8https://www.apkmirror.com/apk/google-inc/android-system-webview/WebView java.lang.NoSuchMethodException:callDrawGLFunction-CSDN博客文章浏览阅读5.7k次。5.1系统上WebView初始化报错Caused by: java.lang.NoSuchMethodException: callDrawGLFunction [long]at java.lang.Class.getMethod(Class.java:664)at java.lang.Class.getMethod(Class.java:643)at com.android.webview.chromium.WebViewDelegateFactory$Api21CompatibilityDele_java.lang.nosuchmethodexception: android.view.displaylistcanvas.calldrawglfuhttps://shuaici.blog.csdn.net/article/details/78459486

http://www.zhongyajixie.com/news/56449.html

相关文章:

  • 做网站要固定ip郑州网站关键词优化公司哪家好
  • 徐州网站建设公司推广方案100个
  • wordpress如何删除你好和设置菜单网站seo方案撰写
  • 加网络网站建设工作室优化是什么意思?
  • 网站制作国际连锁广州网站设计建设
  • 洛阳网站建设好做不市场营销师报名官网
  • wordpress栏目id百度关键词优化服务
  • 怎么做电力设计公司网站百度应用中心
  • 郑州做网站zzmshl百度广告代理
  • .net 网站开发实例交换链接适用于哪些网站
  • 常德百度推广上海网络营销seo
  • 做动态网站还是静态网站河北seo推广公司
  • 公司如何申请一个网站百度推广代理查询
  • 做东西的网站有那些百度推广查询
  • 武汉个人做网站联系电话营销策略的重要性
  • 台州市城乡建设规划局网站百度权重10的网站
  • 网站策划及过程百度竞价关键词价格查询工具
  • 网站建设的广告词西安网站seo公司
  • 郑州直销网站制作关键词搜索推广
  • 南京网站推广营销公司哪家好吉林seo技术交流
  • 做网站需要规划好什么关键词推广怎么做
  • 网站备案 阿里云十种营销方式
  • 澳门网站建设公司网站seo关键词优化技巧
  • 重庆网站建设排名软文代写接单平台
  • php语言开发网站流程最近实时热点新闻事件
  • 龙华做企业网站友情链接怎么互换
  • 自助网站模板平台重庆森林台词
  • 蔚县网站建设免费友情链接网页
  • 网站建设 服务器主机配置小程序推广接单平台
  • 网站建设费入预付款什么科目推广页面