當 webview 遇到自定義的協議時
當我們使用webview開啟自定義的schem的url時,如果不做處理會提示找不到網頁,如下圖:藍色顯示的url 是 baidumap://這個webview識別不了,所以我們要做一些處理,其次我們要理解這個自定義的協議給我們是用來幹嘛的。
好了話不多說 處理如下:
if(url.startsWith("https") || url.startsWith("http")){ view.loadUrl(url); }else{ try { Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url)); startActivity(intent); } catch (ActivityNotFoundException e) { // TODO: handle exception } }
當協議不是https 或者 http時 就 建立一個Intent 用來開啟對應的應用,如果現在我手機安裝了百度地圖,就會開啟手機上的百度地圖app,如下圖
有人就會問了,如果我手機上沒有對應的應用怎麼辦呢,其實也沒有問題,如果是第三方的自定義協議,如果手機上沒有對應app,也會提供網頁版的(不然要自定義協議幹嘛,不過如果沒安裝的話 會報錯,所以我上面的程式碼try catch了,保證程式不會崩潰)。比如百度地圖,程式碼還是原來的程式碼,只是我把百度地圖解除安裝了,所以會顯示網頁版的地圖
還有問會說,我手機裝有對應的app 但是我就是不想用手機上的app ,而是想用網頁版的。這個也不是問題,就簡單的判斷一下schem,是https或者http就呼叫webview.load(url)方法,不是就直接返回true,返回後會繼續跳到下一個url,如下
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
if(url.startsWith("https") || url.startsWith("http")){
view.loadUrl(url);
}
return true;
}
好了,遇到坑就這樣了,也不算坑,就是自己經驗不足
相關推薦
當 webview 遇到自定義的協議時
當我們使用webview開啟自定義的schem的url時,如果不做處理會提示找不到網頁,如下圖:藍色顯示的url 是 baidumap://這個webview識別不了,所以我們要做一些處理,其次我們要理解這個自定義的協議給我們是用來幹嘛的。 好了話不多說 處理如下:
IIS ajax CORS 訪問發送自定義Header時分析
nbsp post true cal 後臺 config -a coo function 場景: a站:http://127.0.0.1/a b站:http://localhost/b (IIS7.5) a站用ajax訪問b的資源,代碼如下: $.ajaxSetu
Struts2配置攔截器自定義棧時拋異常:Unable to load configuration. - interceptor-ref - file:/D:/tomcat_install/webapps/crm/WEB-INF/classes/struts.xml
註意 其他 默認 才會 eba staf -i sta fault 代碼如下: <interceptors> <!-- 註冊自定義攔截器 --> <interceptor name="LoginInterceptor" class="co
通過修改註冊表建立Windows自定義協議
height install ict 所有 cee 新建 gpo ogr 編輯 引言 本文主要介紹註冊表的概念與其相關根項的功能,以及瀏覽器如何通過連接調用自定義協議並與客戶端進行數據通信。文中講及如何通過C#程序、手動修改、安裝項目等不同方式對註冊表進行修改。其中通過安
模仿CountDownLatch類自定義倒時計時器
嘗試 gets trace dstat nth 自定義 count new locks 簡介 這裏模仿CountDownLatch類自定義到時計時器,利用AQS模板中的嘗試獲得共享和釋放共享 1、MyCountDownLatch package com.jacky; i
非常實用的自定義佈局,自定義顯示時長的頂部toast
最近在工作中需要彈出頂部toast且顯示時間不固定。從而寫了下面的一個模擬toast的動畫: 先看動畫: public void isShowToast(final boolean isShow,View mToastV) { final int marinTop = 0;//距離頂
iOS自定義協議中的byte使用
自定義的簡單協議一般包括訊息頭部,訊息碼,訊息體,校驗碼和尾部,一個專案裡面用到的頭部和尾部一般都是固定的,訊息碼用來標識是哪一條訊息,校驗碼用來校驗資料完整性 在一些需要相容多端的開發的時候,可能會遇到使用自定義協議,比如與硬體通訊或者使用socket的時候,接受的資料是按約定
netty自定義協議上傳
客戶端: import io.netty.bootstrap.Bootstrap; import io.netty.channel.ChannelFuture; import io.netty.channel.EventLoopGroup; import io.nett
【轉載】Chrome使用自定義協議開啟本地程式並執行IE開啟網頁
部分內容轉載自: http://blog.sina.com.cn/s/blog_e2b8213a0102wqby.html 專案中遇到某需求:chorme要執行IE並開啟網頁。解決方案之一就是通過自定義協議來實現該需求。 &
Netty實現自定義協議和原始碼分析
本篇 主要講的是自定義協議是如何實現的,以及自定義協議中會出現的問題和Netty是如何支援的。 分為4個部分 |– 粘包 拆包 資料包不全 和解決方案 |– 程式碼實現 |– ByteToMessageDecoder的原始碼分析 |– 過程流程圖 粘包
Xcode開發ios專案遇到自定義執行時屬性異常
異常包含以下字樣: this class is not key value coding-compliant for the key 原因: 添加了使用者定義的執行時屬性,去檢查一下, 點選報錯對應的控制元件,然後看一下,不需要的刪除,如果是空名稱的更要刪除,例如下圖:
微信小程式——自定義元件時,編譯報`Component is not found in path '...'`
問題描述: 在微信小程式中自定義元件時,編譯報Component is not found in path '...' VM4941:1 jsEnginScriptError Component is not found in path "components/watermark
在使用Hanlp配置自定義詞典時遇到的問題
要使用hanlp載入自定義詞典可以通過修改配置檔案hanlp.properties來實現。要注意的點是: 1. root根路徑的配置: hanlp.properties中配置如下: #本配置檔案中的路徑的根目錄,根目錄+其他路徑=完整路徑(支援相對路徑,請參考:https://gith
採用自定義協議代替OCX元件
事情起源:公司視訊播放一直是採用的嵌入瀏覽器元件實現視訊的預覽回放等功能。這種實現方式要求客戶使用IE瀏覽器。 最近上線專案使用Html 5開發,要求IE11。專案中使用了視訊播放功能,如果全部升級到IE11問題多,工作量大。 存在的主要問題: 有些系統開發較早,不能在IE11上執行。 部分客戶電腦配
android串列埠通訊接受自定義協議資料並解析問題
1.一般自定義的串列埠協議 串列埠傳輸介面底層是按位(bit)傳送的,上層是按byte傳送和接收的,但協議為了方便描述,每個byte用十六進位制數(0x00~0xFF)表示,範相當於十進位制的0~255,而byte為八位且是有符號型別,相當於十進位制的-128~127,明
Oracle建立自定義函式時出現錯誤:PLS-00103及PLS-00382
(作者:陳玓玏) 一、PLS-00103 一般出現這個錯誤,基本上可以確定是你的語法錯誤,或者是有中文的輸入。 比如說: 1、Oracle用elsif而你用的是else if; 2、直接從網頁中把程式碼貼上過來結果程式碼中有中文空格。 這種情況下,解決問題的方法
關於Microsoft SQL Server Management Studio自定義安裝時不能更改安裝路徑或只能更改一個或兩個問題的解決
1.首先,肯定你在裝SQLServer之前裝了VS,然後你的C盤裡面會在裡面新建了SQLServer的資料夾,所以你在後面裝SQLServer的時候只能更改一個路徑。 2.解決方法:解除安裝VS,然後再裝SQLServer,進入控制面板,然後把 這些解除安裝了(我圖片裡面
乙太網傳送自定義協議資料包java
//1列舉網絡卡並開啟裝置 jpcap.NetworkInterface[] devices = JpcapCaptor.getDeviceList(); N
使用pythonanywhere的自定義域名時的https的記錄
使用pythonanywhere的自定義域名時的https的記錄 我們的加密為HTTPS提供免費的SSL證書。在PythonAnywhere上獲取Let’s Encrypt證書很容易。就是這樣: 提示:yourusername.pythonanywhere.com上的免費網站已經
goland匯入自定義包時出錯(一招解決問題)
使用goland編寫go語言程式的時候,發現針對自定義的包無法引入。如下圖所示: 具體錯誤也就是main.go:13:2: cannot find package "grpool" in any of: 然後就各種在網上查詢,大多數也都講得很不清楚,最後在網上找到一個說的比較詳細的