摘要:今天只記錄小的簡(jiǎn)單的東西,因?yàn)橐X(jué)了。具體使用請(qǐng)以自身需求為準(zhǔn)。那么組裝的時(shí)候,可以指定包名,然后指定名,然后增加傳遞的數(shù)據(jù)和。這樣就很好的把一個(gè)跳轉(zhuǎn)到某個(gè)應(yīng)用某個(gè)頁(yè)面的的行為用指定出來(lái)。方便應(yīng)用和應(yīng)用之間相互跳轉(zhuǎn)。
今天只記錄小的簡(jiǎn)單的東西,因?yàn)橐X(jué)了。
如果你想做一個(gè)Hybrid應(yīng)用,也許有多種方式,也許使用PhoneGap,也許只使用WebView,也許在Native的某個(gè)頁(yè)面嵌入一部分的WebView。
具體使用請(qǐng)以自身需求為準(zhǔn)。那么今天說(shuō)說(shuō)最最輕量的一個(gè)方案:我們有這么個(gè)需求,有的頁(yè)面需要使用 Native,有的頁(yè)面需要使用WebView,同時(shí),Native改變可能比較小,WebView的內(nèi)容改動(dòng)是很多的,因?yàn)閃ebView中呈現(xiàn)的內(nèi)容在服務(wù)器端,因此它的好處就是不需要升級(jí)軟件而直接為用戶提供新功能。
那么基于這么一種業(yè)務(wù)需求,我們想到的其中一個(gè)辦法就是使用自定義的Schema,使用一個(gè)統(tǒng)一的Schema管理器管理,對(duì)于不同的Schema我們利用Intent的一些特性,跳到我們所需要的Activity里,呈現(xiàn)我們所需要的內(nèi)容即可。
那么我們這里用到了一個(gè)很小的組件類(lèi)就是java.net.URI 這個(gè)組件,想必看見(jiàn)這個(gè)類(lèi)必然會(huì)想到j(luò)ava.net.URL類(lèi)吧。URI全稱(chēng)是Uniform Resource Identifier(通用資源標(biāo)識(shí)符),URL這個(gè)類(lèi)是Uniform Resource Locator(統(tǒng)一資源定位符)(摘自百度百科)。很多人可能混淆兩個(gè)概念,其實(shí)只要只要URL是URI的子集即可,也就是說(shuō),相對(duì)來(lái)講,URI的定義會(huì)更廣泛抽象一些。
引用一個(gè)我們自定義Schema的一個(gè)URI例子
lwy://cn.com.zjseek.lwy/news?id=2&path=3
這里Schema,Location,Path,Query等都俱全了,那么有什么用呢?
Location可以指定一個(gè)包名,我們用java.net.URI對(duì)象的構(gòu)造函數(shù)生成后,用getHost方法能獲取到它的“主機(jī)”
URI uri = new URI("lwy://cn.com.zjseek.lwy/news?id=2&path=3"); System.out.println(uri.getScheme()); // lwy System.out.println(uri.getHost()); // cn.com.zjseek.lwy System.out.println(uri.getPath()); // /news System.out.println(uri.getQuery()); // id=2&path=3
運(yùn)行這段代碼能得到每一部分的結(jié)果。
那么組裝Intent的時(shí)候,可以指定包名(Host),然后指定Action名(path),然后增加傳遞的數(shù)據(jù)和Fragment(Query)。
這樣就很好的把一個(gè)跳轉(zhuǎn)到某個(gè)應(yīng)用某個(gè)頁(yè)面的的行為用URI指定出來(lái)。方便應(yīng)用和應(yīng)用之間相互跳轉(zhuǎn)。
Intent intent = new Intent(); intent.setPackage(uri.getHost()); intent.setAction(uri.getPath()); ...
這樣的URI也非常適合在WebView中用標(biāo)簽進(jìn)行跳轉(zhuǎn),最終方便了我們進(jìn)行HybridApp的開(kāi)發(fā)。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/85311.html
摘要:若用實(shí)現(xiàn),則體驗(yàn)上會(huì)相差不少。至此,因?yàn)楸疚闹械闹攸c(diǎn),的實(shí)現(xiàn)方案及與交互方案。中的實(shí)現(xiàn)方式原理與中原生協(xié)議類(lèi)似,通過(guò)攔截形式實(shí)現(xiàn)??梢酝ㄟ^(guò)自定義協(xié)議名稱(chēng),然后中攔截這個(gè),并解析其中參數(shù)與回調(diào)函數(shù),調(diào)用方法,并實(shí)現(xiàn)回調(diào)。 android hybird 與h5 app區(qū)別 hybird 與h5 app是不一樣的,以前對(duì)這兩者理解有所誤解,在實(shí)際開(kāi)發(fā)中也并未真正采用hybird,而是使用h5...
摘要:近期公司需要針對(duì)分享流程進(jìn)行優(yōu)化,其中一點(diǎn)就是前端檢測(cè)是否安裝應(yīng)用,來(lái)進(jìn)行不同的判斷下載或直接跳轉(zhuǎn)到中。為回調(diào)函數(shù),根據(jù)返回來(lái)判斷是否安裝。 近期公司需要針對(duì)分享流程進(jìn)行優(yōu)化,其中一點(diǎn)就是前端H5檢測(cè)是否安裝應(yīng)用,來(lái)進(jìn)行不同的判斷(下載或直接跳轉(zhuǎn)到app中)。原理很簡(jiǎn)單:創(chuàng)建一個(gè)iframe去打開(kāi)uri。如果打開(kāi)app成功網(wǎng)頁(yè)進(jìn)入后臺(tái),再切換回來(lái)時(shí)間會(huì)超過(guò)2.5s。利用時(shí)間去檢測(cè)。下面...
閱讀 2283·2021-09-07 09:58
閱讀 3473·2019-08-30 14:07
閱讀 1353·2019-08-29 12:32
閱讀 723·2019-08-29 11:06
閱讀 3746·2019-08-26 18:18
閱讀 3809·2019-08-26 17:35
閱讀 1440·2019-08-26 11:35
閱讀 671·2019-08-26 11:35