H5中啟動(dòng)Android App

首先明晰苍姜,微信里屏蔽了schema協(xié)議译蒂。除非你是微信的合作伙伴之類(lèi)的曼月,他們專(zhuān)門(mén)給你配置進(jìn)白名單。否則柔昼,我們就沒(méi)辦法通過(guò)這個(gè)協(xié)議在微信中直接喚起app哑芹。

因此,我們需要先判斷頁(yè)面場(chǎng)景是否在微信中捕透,如果在微信中聪姿,則會(huì)提示用戶在瀏覽器中打開(kāi)。

H5中間接判斷應(yīng)用是否安裝

這里的邏輯很簡(jiǎn)單乙嘀,當(dāng)沒(méi)有成功打開(kāi)app的時(shí)候末购,新頁(yè)面不會(huì)彈出則頁(yè)面邏輯繼續(xù)進(jìn)行;否則如果進(jìn)入了新頁(yè)面虎谢,則頁(yè)面邏輯便終止了盟榴。所以我們可以另開(kāi)一個(gè)延時(shí)的線程來(lái)判斷這個(gè)事情

if(...){
document.location = '';
setTimeout(function(){
   //此處如果執(zhí)行則表示沒(méi)有app
},200);
}

通過(guò)H5喚起APP

編輯AndroidManifest.xml,主要是增加第二個(gè)<intent-filter>婴噩,launchapp用來(lái)標(biāo)識(shí)schema擎场,最好能保證手機(jī)系統(tǒng)唯一,那樣就可以打開(kāi)應(yīng)用几莽,而不是彈出一個(gè)選擇框迅办。可以附帶自己的數(shù)據(jù)通過(guò)string傳遞到activity章蚣,比如完整url為 launchapp://?data=mydata

<activity    
     android:name="com.robert.MainActivity"    
     android:configChanges="orientation|keyboardHidden|navigation|screenSize"    
     android:screenOrientation="landscape"    
     android:theme="@android:style/Theme.NoTitleBar.Fullscreen" >    
     <intent-filter>    
         <action android:name="android.intent.action.MAIN" />    
         <category android:name="android.intent.category.LAUNCHER" />    
     </intent-filter>    
     <intent-filter>    
         <action android:name="android.intent.action.VIEW" />    
         <category android:name="android.intent.category.BROWSABLE" />    
         <category android:name="android.intent.category.DEFAULT"/>    
         <data android:scheme="launchapp" android:pathPrefix="/haha" />    
     </intent-filter>    
   </activity>   

然后通過(guò)activity獲得data數(shù)據(jù):

  public void onCreate(Bundle savedInstanceState) {             
     Uri uridata = this.getIntent().getData();             
     String mydata = uridata.getQueryParameter("data");            
  }  

編寫(xiě)html頁(yè)面

整個(gè)頁(yè)面也許是某個(gè)app的詳細(xì)介紹站欺,這里只寫(xiě)出關(guān)鍵的js代碼:

<activity  
     android:name="com.robert.MainActivity"    
     android:configChanges="orientation|keyboardHidden|navigation|screenSize"    
     android:screenOrientation="landscape"    
     android:theme="@android:style/Theme.NoTitleBar.Fullscreen" >    
     <intent-filter>    
         <action android:name="android.intent.action.MAIN" />    
         <category android:name="android.intent.category.LAUNCHER" />    
     </intent-filter>    
     <intent-filter>    
         <action android:name="android.intent.action.VIEW" />    
         <category android:name="android.intent.category.BROWSABLE" />    
         <category android:name="android.intent.category.DEFAULT"/>    
         <data android:scheme="launchapp" android:pathPrefix="/haha" />    
     </intent-filter>    
</activity>   

下面代碼可以達(dá)到這樣一個(gè)目的,先請(qǐng)求 launchapp:// ,如果系統(tǒng)能處理,或者說(shuō)已經(jīng)安裝了myapp表示的應(yīng)用矾策,那么就可以打開(kāi)磷账,另外,如果不能打開(kāi)蝴韭,直接刷新一下當(dāng)前頁(yè)面够颠,等于是重置location熙侍。

function openApp() {    
       
           if (/android/i.test(navigator.userAgent)) {    
                var isrefresh = getUrlParam('refresh'); // 獲得refresh參數(shù)    
                if(isrefresh == 1) {    
                    return    
                }    
                window.location.href = 'launchapp://haha?data=mydata';    
                window.setTimeout(function () {    
                        window.location.href += '&refresh=1' // 附加一個(gè)特殊參數(shù)榄鉴,用來(lái)標(biāo)識(shí)這次刷新不要再調(diào)用myapp:// 了    
                }, 500);    
            }    
       
   }  

整體代碼

代碼功能: 判斷手機(jī)/平板是否安裝app 如果安裝 則調(diào)用app的scheme,傳入url當(dāng)作參數(shù)蛉抓,來(lái)做后續(xù)操作 如果沒(méi)有安裝 則跳轉(zhuǎn)到app store/google play 下載app

(function () {
    var openUrl = window.location.search;
    try {
        openUrl = openUrl.substring(1, openUrl.length);
    } catch (e) {}
    var isiOS = navigator.userAgent.match('iPad') || navigator.userAgent.match('iPhone') || navigator.userAgent.match(
        'iPod'),
        isAndroid = navigator.userAgent
            .match('Android'),
        isDesktop = !isiOS && !isAndroid;
    if (isiOS) {
        setTimeout(function () {
            window.location = "itms-apps://itunes.apple.com/app/[name]/[id]?mt=8";
        }, 25);
        window.location = "[scheme]://[host]?url=" + openUrl;
    } else if (isAndroid) {
        window.location = "intent://[host]/" + "url=" + openUrl + "#Intent;scheme=[scheme];package=[package_name];end";
    } else {
        window.location.href = openUrl;
    }
})();
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末庆尘,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子巷送,更是在濱河造成了極大的恐慌驶忌,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,968評(píng)論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件笑跛,死亡現(xiàn)場(chǎng)離奇詭異付魔,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)飞蹂,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,601評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門(mén)几苍,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人陈哑,你說(shuō)我怎么就攤上這事妻坝。” “怎么了惊窖?”我有些...
    開(kāi)封第一講書(shū)人閱讀 153,220評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵刽宪,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我界酒,道長(zhǎng)圣拄,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,416評(píng)論 1 279
  • 正文 為了忘掉前任毁欣,我火速辦了婚禮庇谆,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘署辉。我一直安慰自己族铆,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,425評(píng)論 5 374
  • 文/花漫 我一把揭開(kāi)白布哭尝。 她就那樣靜靜地躺著哥攘,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上逝淹,一...
    開(kāi)封第一講書(shū)人閱讀 49,144評(píng)論 1 285
  • 那天耕姊,我揣著相機(jī)與錄音,去河邊找鬼栅葡。 笑死茉兰,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的欣簇。 我是一名探鬼主播规脸,決...
    沈念sama閱讀 38,432評(píng)論 3 401
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼熊咽!你這毒婦竟也來(lái)了莫鸭?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 37,088評(píng)論 0 261
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤横殴,失蹤者是張志新(化名)和其女友劉穎被因,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體衫仑,經(jīng)...
    沈念sama閱讀 43,586評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡梨与,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,028評(píng)論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了文狱。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片粥鞋。...
    茶點(diǎn)故事閱讀 38,137評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖如贷,靈堂內(nèi)的尸體忽然破棺而出陷虎,到底是詐尸還是另有隱情,我是刑警寧澤杠袱,帶...
    沈念sama閱讀 33,783評(píng)論 4 324
  • 正文 年R本政府宣布尚猿,位于F島的核電站,受9級(jí)特大地震影響楣富,放射性物質(zhì)發(fā)生泄漏凿掂。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,343評(píng)論 3 307
  • 文/蒙蒙 一纹蝴、第九天 我趴在偏房一處隱蔽的房頂上張望庄萎。 院中可真熱鬧,春花似錦塘安、人聲如沸糠涛。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,333評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)忍捡。三九已至集漾,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間砸脊,已是汗流浹背具篇。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,559評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留凌埂,地道東北人驱显。 一個(gè)月前我還...
    沈念sama閱讀 45,595評(píng)論 2 355
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像瞳抓,于是被迫代替她去往敵國(guó)和親埃疫。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,901評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容