#Android 通過瀏覽器打開手機(jī)app

CTO吩咐下來的任務(wù)...弄下能不能在瀏覽器中啟動我們的App虐骑。

踩坑

原來的做法是:


<a href="[scheme]://[host]/[path]?[query]">啟動應(yīng)用程序</a> 

各個(gè)值的定義為:

scheme:判別啟動的App膀跌。 ※詳細(xì)后述
host:適當(dāng)記述
path:傳值時(shí)必須的key ※沒有也可以
query:獲取值的Key和Value ※沒有也可以


例如:


<a href="myapp://jp.app/openwith?name=zhangsan&age=26">啟動應(yīng)用程序</a>  

而在android的清單文件的主頁面配置如下:


<intent-filter>  
    <action android:name="android.intent.action.VIEW"/>  
    <category android:name="android.intent.category.DEFAULT" />  
    <category android:name="android.intent.category.BROWSABLE" />  
    <data android:scheme="myapp" android:host="jp.app" android:pathPrefix="/openwith"/>  
</intent-filter>

然而...并不可以踢涌,我用的魅族的手機(jī)秋冰,用的魅族自帶瀏覽器犁罩。GG了
谷歌瀏覽器,或者是android原生瀏覽器可能可以产弹,或者是我們自帶的WebView派歌。

有看到帖子說是因?yàn)閐ata-sentintent的原因,具體原因我也沒有去查看痰哨。
有興趣的童鞋可以坐飛機(jī)直達(dá):--------> 飛吧

解決

此路不通我們走另外一條路胶果。

肯定是不能使用簡單的<intent-filter>來進(jìn)行查找,我們使用js~:


<!doctype html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8">

        <meta name="apple-mobile-web-app-capable" content="yes">
        <meta name="apple-mobile-web-app-status-bar-style" content="black"/>

        <title>打開我的app</title>
        <meta id="viewport" name="viewport" content="width=device-width,initial-scale=1.0,minimum-scale=1.0,maximum-scale=1.0,minimal-ui">
    </head>
    <body>
        <div>
            <a id="J-call-app" href="javascript:;" class="label">立即打開>></a>
            <input id="J-download-app" type="hidden" name="storeurl" value="http://當(dāng)找不到該app的時(shí)候的下載地址斤斧,如應(yīng)用寶之類的...不要谷歌早抠,翻不了墻的哥們.com">
        </div>

        <script>
            (function(){
                var ua = navigator.userAgent.toLowerCase();
                var t;
                var config = {
                    /*scheme:必須*/
                    scheme_IOS: 'cundong://',
                    scheme_Adr: 'cundong://splash',
                    download_url: document.getElementById('J-download-app').value,
                    timeout: 600
                };

                function openclient() {
                    var startTime = Date.now();

                    var ifr = document.createElement('iframe');


                    ifr.src = ua.indexOf('os') > 0 ? config.scheme_IOS : config.scheme_Adr;
                    ifr.style.display = 'none';
                    document.body.appendChild(ifr);

                    var t = setTimeout(function() {
                        var endTime = Date.now();

                        if (!startTime || endTime - startTime < config.timeout + 200) { 
                            window.location = config.download_url;
                        } else {
                            
                        }
                    }, config.timeout);

                    window.onblur = function() {
                        clearTimeout(t);
                    }
                }
                window.addEventListener("DOMContentLoaded", function(){
                    document.getElementById("J-call-app").addEventListener('click',openclient,false);

                }, false);
            })()
        </script>
    </body>
</html>

我們需要注意這個(gè)地方:


  <input id="J-download-app" type="hidden" name="storeurl" value="http://當(dāng)找不到該app的時(shí)候的下載地址,如應(yīng)用寶之類的...不要谷歌折欠,翻不了墻的哥們.com">

記得替換成你們的下載地址贝或。

而我們大android的清單文件需要配置:


 <activity android:name=".ui.activity.SplashActivity">
            <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.DEFAULT" />
                <category android:name="android.intent.category.BROWSABLE" />
                <data android:host="splash" android:scheme="cundong" />
            </intent-filter>
        </activity>

OK吼过,使用魅族的瀏覽器親測成功锐秦。其他牌子的瀏覽器稍候測試,畢竟我那么反感那些花里胡哨的瀏覽器盗忱,要下載測試我是不情愿酱床。。趟佃。

優(yōu)化

好了扇谣,好像單純地打開app...沒什么卵用啊,能不能傳值呢闲昭?答案是可以的~我們看js:


         var config = {
                    /*scheme:必須*/
                    scheme_IOS: 'cundong://',
                    scheme_Adr: 'cundong://splash',
                    download_url: document.getElementById('J-download-app').value,
                    timeout: 600
                };

其中的scheme_Adr就是android的匹配Scheme罐寨,如果需要傳值的話,就是在后面通過get的方式進(jìn)行傳值序矩。

   var config = {
                    /*scheme:必須*/
                    scheme_IOS: 'cundong://',
                    scheme_Adr: 'cundong://splash?nama=Ly&age=18',
                    download_url: document.getElementById('J-download-app').value,
                    timeout: 600
                };

然后在跳轉(zhuǎn)的頁面中進(jìn)行獲妊炻獭:


  Intent i_getvalue = getIntent();
        String action = i_getvalue.getAction();

        if (Intent.ACTION_VIEW.equals(action)) {
            Uri uri = i_getvalue.getData();
            if (uri != null) {
                String name = uri.getQueryParameter("name");
                String age = uri.getQueryParameter("age");
                showTs(name);
                showTs(age);
                showLog("name----------------"+name);
                showLog("age----------------"+age);
            }
        }

就可以進(jìn)行Hhtml調(diào)起APP,并進(jìn)行頁面?zhèn)髦档牟僮髁?.. 其實(shí)難度主要是在js方面。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末簸淀,一起剝皮案震驚了整個(gè)濱河市瓶蝴,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌租幕,老刑警劉巖舷手,帶你破解...
    沈念sama閱讀 211,194評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異劲绪,居然都是意外死亡男窟,警方通過查閱死者的電腦和手機(jī)盆赤,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,058評論 2 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來歉眷,“玉大人弟劲,你說我怎么就攤上這事±呀妫” “怎么了兔乞?”我有些...
    開封第一講書人閱讀 156,780評論 0 346
  • 文/不壞的土叔 我叫張陵,是天一觀的道長凉唐。 經(jīng)常有香客問我庸追,道長,這世上最難降的妖魔是什么台囱? 我笑而不...
    開封第一講書人閱讀 56,388評論 1 283
  • 正文 為了忘掉前任淡溯,我火速辦了婚禮,結(jié)果婚禮上簿训,老公的妹妹穿的比我還像新娘咱娶。我一直安慰自己,他們只是感情好强品,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,430評論 5 384
  • 文/花漫 我一把揭開白布膘侮。 她就那樣靜靜地躺著,像睡著了一般的榛。 火紅的嫁衣襯著肌膚如雪琼了。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,764評論 1 290
  • 那天夫晌,我揣著相機(jī)與錄音雕薪,去河邊找鬼。 笑死晓淀,一個(gè)胖子當(dāng)著我的面吹牛所袁,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播凶掰,決...
    沈念sama閱讀 38,907評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼燥爷,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了锄俄?” 一聲冷哼從身側(cè)響起局劲,我...
    開封第一講書人閱讀 37,679評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎奶赠,沒想到半個(gè)月后鱼填,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,122評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡毅戈,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,459評論 2 325
  • 正文 我和宋清朗相戀三年苹丸,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了愤惰。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,605評論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡赘理,死狀恐怖宦言,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情商模,我是刑警寧澤奠旺,帶...
    沈念sama閱讀 34,270評論 4 329
  • 正文 年R本政府宣布,位于F島的核電站施流,受9級特大地震影響响疚,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜瞪醋,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,867評論 3 312
  • 文/蒙蒙 一忿晕、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧银受,春花似錦践盼、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,734評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至蜀漆,卻和暖如春谅河,著一層夾襖步出監(jiān)牢的瞬間咱旱,已是汗流浹背确丢。 一陣腳步聲響...
    開封第一講書人閱讀 31,961評論 1 265
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留吐限,地道東北人鲜侥。 一個(gè)月前我還...
    沈念sama閱讀 46,297評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像诸典,于是被迫代替她去往敵國和親描函。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,472評論 2 348

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