H5中啓動Android app

H5中判斷應用是否安裝

H5中是無法直接判斷應用是否安裝的,但是可以間接判斷。
第一種方式,
if(...){
document.location = '';
setTimeout(function(){
   //此處如果執行則表示沒有app
},200);
}
這裏的邏輯很簡單,當沒有成功打開app的時候
新頁面不會彈出則頁面邏輯可言進行,如果進入了新頁面,則頁面邏輯便終止了
所以我們可以另開一個延時的線程來判斷這個事情。

通過H5喚起APP

編輯AndroidManifest.xml,主要是增加第二個<intent-filter>,launchapp用來標識schema,最好能保證手機系統唯一,那樣就可以打開應用,而不是彈出一個選擇框。可以附帶自己的數據通過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>
然後通過activity獲得data數據:

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

HTML代碼

下面代碼可以達到這樣一個目的,先請求 launchapp:// ,如果系統能處理,或者說已經安裝了myapp表示的應用,那麼就可以打開,另外,如果不能打開,直接刷新一下當前頁面,等於是重置location

function openApp() {    

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

   }



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章