瀏覽器經過JS打開Android程序

    作項目的時候,項目中有個需求,須要經過網頁打開app,聽到這個功能,我先是蛋疼了一會,可是在網上查了一下資料發現原理其實很簡單,本質就是經過瀏覽器輸入咱們本地android程序的路徑,不過這個路徑須要咱們在android中AndroidManifest.xml聲明一下 android

<activity android:name=".LoadingActivity"
                  android:label="@string/app_name"
                  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>//配置能夠經過瀏覽器啓動Intent
                <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="zhu" /> //本身定義的協議
            </intent-filter>

        </activity>

這個地方配置了後,咱們能夠試到在瀏覽器上輸入zhu://splash 瀏覽器

    這會自動的跳轉到搜索頁面,這是由於瀏覽器若是發現地址的前綴不是http等常見的協議就會自動跳到搜索的頁面,某些還會在前面自動加上http。 app

    既然這樣沒辦法,那我就直接寫了個js代碼來實現這跳轉 spa

window.location = "zhu://splash";


     訪問js頁面 code

    項目的需求以後又變了一下,不只要打開咱們的App還要判斷當沒有App的時候自動下載它 xml

    代碼以下: 事件

<script>
    (function(){
        var t;
        function openclient() { //判斷在規定時間內是否能夠打開app,若是超時就代碼沒有安裝對應的app 跳到下載頁面。

            var startTime = Date.now();

            window.location = "zhu://splash";
            var t = setTimeout(function() {
                var endTime = Date.now();
                if (endTime - startTime < 800) {
                    window.location = 「你的下載地址」;
                }
            }, 600);

            window.onblur = function() {
                clearTimeout(t);
            }
        }
        window.addEventListener("DOMContentLoaded", function(){ //添加監聽事件
            openclient();
        }, false);
    })()
</script>
相關文章
相關標籤/搜索