电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

解決Android WebView攔截url,視頻播放加載失敗的問題

瀏覽:104日期:2022-09-25 14:46:28

需求:Android調用webView加載網頁的時候,攔截某一個鏈接不執行此鏈接,執行指定跳轉到其他activity頁面。

webview的setWebViewClient方法中提供了幾個api:

// 此回調是攔截點擊要跳轉的url鏈接,并對請求的url鏈接做修改(添加刪除字段)public WebResourceResponse shouldInterceptRequest(WebView view, String url) // 在點擊請求的是鏈接是才會調用,重寫此方法返回true表明點擊網頁里面的鏈接還是在當前的webview里跳轉,不跳到瀏覽器那邊。這個函數我們可以做很多操作,比如我們讀取到某些特殊的URL,于是就可以不打開地址,取消這個操作,進行預先定義的其他操作,這對一個程序是非常必要的。public boolean shouldOverrideUrlLoading(WebView view, String url)

所以我的需求就是在shouldOverrideUrlLoading方法中做處理

webView.setWebViewClient(new WebViewClient() { @Override // 在點擊請求的是鏈接是才會調用,重寫此方法返回true表明點擊網頁里面的鏈接還是在當前的webview里跳轉,不跳到瀏覽器那邊。這個函數我們可以做很多操作,比如我們讀取到某些特殊的URL,于是就可以不打開地址,取消這個操作,進行預先定義的其他操作,這對一個程序是非常必要的。 public boolean shouldOverrideUrlLoading(WebView view, String url) { // 判斷url鏈接中是否含有某個字段,如果有就執行指定的跳轉(不執行跳轉url鏈接),如果沒有就加載url鏈接 if (url.contains('/mproduct-')) { Intent i = new Intent(MainActivity.this, MainActivity.class); startActivity(i); return true; } else { return false; } } });

webview的一些其他設置

//點擊返回鍵,返回上一個頁面,而不是退出程序 public boolean onKeyDown(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_BACK && webView.canGoBack()) { webView.goBack();// 返回前一個頁面 return true; } return super.onKeyDown(keyCode, event); }

@Override protected void onDestroy() { super.onDestroy(); //清楚webview緩存 webView.clearCache(true); }

private void initView() { webView = (WebView) findViewById(R.id.webView); WebSettings settings = webView.getSettings(); settings.setJavaScriptEnabled(true); settings.setBuiltInZoomControls(true);// 設置支持縮放 settings.setSupportZoom(false);// 不支持縮放 settings.setUseWideViewPort(false);// 將圖片調整到適合webview大小 settings.setLoadWithOverviewMode(true);// 縮放至屏幕的大小 settings.setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK);//支持緩存 }

WebSettings 的常用方法介紹:

setJavaScriptEnabled(true); //支持js setPluginsEnabled(true); //支持插件 setUseWideViewPort(false); //將圖片調整到適合webview的大小 setSupportZoom(true); //支持縮放 setLayoutAlgorithm(LayoutAlgorithm.SINGLE_COLUMN); //支持內容重新布局 supportMultipleWindows(); //多窗口 setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK); //關閉webview中緩存 setAllowFileAccess(true); //設置可以訪問文件 setNeedInitialFocus(true); //當webview調用requestFocus時為webview設置節點 webview webSettings.setBuiltInZoomControls(true); //設置支持縮放 setJavaScriptCanOpenWindowsAutomatically(true); //支持通過JS打開新窗口 setLoadWithOverviewMode(true); // 縮放至屏幕的大小 setLoadsImagesAutomatically(true); //支持自動加載圖片

WebViewClient 的方法全解:

doUpdateVisitedHistory(WebView view, String url, boolean isReload) //(更新歷史記錄) onFormResubmission(WebView view, Message dontResend, Message resend) //(應用程序重新請求網頁數據) onLoadResource(WebView view, String url) // 在加載頁面資源時會調用,每一個資源(比如圖片)的加載都會調用一次。 onPageStarted(WebView view, String url, Bitmap favicon) //這個事件就是開始載入頁面調用的,通常我們可以在這設定一個loading的頁面,告訴用戶程序在等待網絡響應。 onPageFinished(WebView view, String url) //在頁面加載結束時調用。同樣道理,我們知道一個頁面載入完成,于是我們可以關閉loading 條,切換程序動作。 onReceivedError(WebView view, int errorCode, String description, String failingUrl)// (報告錯誤信息) onReceivedHttpAuthRequest(WebView view, HttpAuthHandler handler, String host,String realm)//(獲取返回信息授權請求) onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) //重寫此方法可以讓webview處理https請求。onScaleChanged(WebView view, float oldScale, float newScale) // (WebView發生改變時調用) onUnhandledKeyEvent(WebView view, KeyEvent event) //(Key事件未被加載時調用) shouldOverrideKeyEvent(WebView view, KeyEvent event)//重寫此方法才能夠處理在瀏覽器中的按鍵事件。 shouldOverrideUrlLoading(WebView view, String url) //在點擊請求的是鏈接是才會調用,重寫此方法返回true表明點擊網頁里面的鏈接還是在當前的webview里跳轉,不跳到瀏覽器那邊。這個函數我們可以做很多操作,比如我們讀取到某些特殊的URL,于是就可以不打開地址,取消這個操作,進行預先定義的其他操作,這對一個程序是非常必要的。

關于WebView加載的H5,H5中視頻播放加載失敗的問題解決:

1、AndroidManifest.xml中 在webview所在的activity配置文件加入下面屬性

android:hardwareAccelerated='true'

2、添加 webSettings.setPluginState(WebSettings.PluginState.ON);

沒加的話,視頻會加載失敗

3、5.0 以上的手機要加這個判斷

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { webSettings.setMixedContentMode(WebSettings.MIXED_CONTENT_ALWAYS_ALLOW); }

以上這篇解決Android WebView攔截url,視頻播放加載失敗的問題就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持好吧啦網。

標簽: Android
主站蜘蛛池模板: 直线模组_滚珠丝杆滑台_模组滑台厂家_万里疆科技 | 武汉高低温试验箱_恒温恒湿试验箱厂家-武汉蓝锐环境科技有限公司 | 大行程影像测量仪-探针型影像测量仪-增强型影像测量仪|首丰百科 大通天成企业资质代办_承装修试电力设施许可证_增值电信业务经营许可证_无人机运营合格证_广播电视节目制作许可证 | 撕碎机_轮胎破碎机_粉碎机_回收生产线厂家_东莞华达机械有限公司 | 国产离子色谱仪,红外分光测油仪,自动烟尘烟气测试仪-青岛埃仑通用科技有限公司 | 润滑油加盟_润滑油厂家_润滑油品牌-深圳市沃丹润滑科技有限公司 琉璃瓦-琉璃瓦厂家-安徽盛阳新型建材科技有限公司 | 山东锐智科电检测仪器有限公司_超声波测厚仪,涂层测厚仪,里氏硬度计,电火花检漏仪,地下管线探测仪 | 广东高华家具-公寓床|学生宿舍双层铁床厂家【质保十年】 | 创绿家招商加盟网-除甲醛加盟-甲醛治理加盟-室内除甲醛加盟-创绿家招商官网 | 寮步纸箱厂_东莞纸箱厂 _东莞纸箱加工厂-东莞市寮步恒辉纸制品厂 | 交变/复合盐雾试验箱-高低温冲击试验箱_安奈设备产品供应杭州/江苏南京/安徽马鞍山合肥等全国各地 | 不锈钢发酵罐_水果酒发酵罐_谷物发酵罐_山东誉诚不锈钢制品有限公司 | 山楂片_雪花_迷你山楂片_山楂条饼厂家-青州市丰源食品厂 | 武汉天安盾电子设备有限公司 - 安盾安检,武汉安检门,武汉安检机,武汉金属探测器,武汉测温安检门,武汉X光行李安检机,武汉防爆罐,武汉车底安全检查,武汉液体探测仪,武汉安检防爆设备 | 专业音响设备_舞台音响设备_会议音响工程-首选深圳一禾科技 | 东莞螺丝|东莞螺丝厂|东莞不锈钢螺丝|东莞组合螺丝|东莞精密螺丝厂家-东莞利浩五金专业紧固件厂家 | 湿地保护| 薪动-人力资源公司-灵活用工薪资代发-费用结算-残保金优化-北京秒付科技有限公司 | 电缆桥架生产厂家_槽式/梯式_热镀锌线槽_广东东莞雷正电气 | 传递窗_超净|洁净工作台_高效过滤器-传递窗厂家广州梓净公司 | 电磁流量计厂家_涡街流量计厂家_热式气体流量计-青天伟业仪器仪表有限公司 | 土壤墒情监测站_土壤墒情监测仪_土壤墒情监测系统_管式土壤墒情站-山东风途物联网 | KBX-220倾斜开关|KBW-220P/L跑偏开关|拉绳开关|DHJY-I隔爆打滑开关|溜槽堵塞开关|欠速开关|声光报警器-山东卓信有限公司 | 苏州西装定制-西服定制厂家-职业装定制厂家-尺品服饰西装定做公司 | 网站建设,北京网站建设,北京网站建设公司,网站系统开发,北京网站制作公司,响应式网站,做网站公司,海淀做网站,朝阳做网站,昌平做网站,建站公司 | 交通信号灯生产厂家_红绿灯厂家_电子警察监控杆_标志杆厂家-沃霖电子科技 | 泰来华顿液氮罐,美国MVE液氮罐,自增压液氮罐,定制液氮生物容器,进口杜瓦瓶-上海京灿精密机械有限公司 | 北京企业宣传片拍摄_公司宣传片制作-广告短视频制作_北京宣传片拍摄公司 | 全自动包装秤_全自动上袋机_全自动套袋机_高位码垛机_全自动包装码垛系统生产线-三维汉界机器(山东)股份有限公司 | 智能风向风速仪,风速告警仪,数字温湿仪,综合气象仪(气象五要素)-上海风云气象仪器有限公司 | 美名宝起名网-在线宝宝、公司、起名平台 | 废气处理设备-工业除尘器-RTO-RCO-蓄热式焚烧炉厂家-江苏天达环保设备有限公司 | 安平县鑫川金属丝网制品有限公司,声屏障,高速声屏障,百叶孔声屏障,大弧形声屏障,凹凸穿孔声屏障,铁路声屏障,顶部弧形声屏障,玻璃钢吸音板 | 金刚网,金刚网窗纱,不锈钢网,金刚网厂家- 河北萨邦丝网制品有限公司 | 拉力机-拉力试验机-万能试验机-电子拉力机-拉伸试验机-剥离强度试验机-苏州皖仪实验仪器有限公司 | 垃圾压缩设备_垃圾处理设备_智能移动式垃圾压缩设备--山东明莱环保设备有限公司 | 3dmax渲染-效果图渲染-影视动画渲染-北京快渲科技有限公司 | 不锈钢搅拌罐_高速搅拌罐厂家-无锡市凡格德化工装备科技有限公司 | 学叉车培训|叉车证报名|叉车查询|叉车证怎么考-工程机械培训网 | 桁架楼承板-钢筋桁架楼承板-江苏众力达钢筋楼承板厂 | 外贮压-柜式-悬挂式-七氟丙烷-灭火器-灭火系统-药剂-价格-厂家-IG541-混合气体-贮压-非贮压-超细干粉-自动-灭火装置-气体灭火设备-探火管灭火厂家-东莞汇建消防科技有限公司 |