1. 程式人生 > >Android H5判斷是否安裝app和喚起APP

Android H5判斷是否安裝app和喚起APP

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

通過H5喚起APP
編輯AndroidManifest.xml:
主要是增加第二個<intent-filter>,launchapp用來標識schema,最好能保證手機系統唯一,那樣就可以開啟應用,而不是彈出一個選擇框。
android:pathPrefix標識url的path,可以附帶自己的資料通過string傳遞到activity,比如完整url為 launchapp://haha?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頁面:
   整個頁面也許是某個app的詳細介紹,這裡只寫出關鍵的js程式碼:
 
 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);  
             }  
      
    }

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

歡迎關注公眾號,互相學習

 


相關推薦

Android H5判斷是否安裝app喚起APP

H5中是無法直接判斷應用是否安裝的,但是可以間接判斷。 第一種方式, if(...){ document.location = ''; setTimeout(function(){    //此處如果

Appium——解決每次啟動時都安裝settingunlock app方法

module 分享圖片 images 安裝目錄 devices 重啟 lib png nod 找到appium安裝目錄 C:\Program Files (x86)\Appium\node_modules\appium\lib\devices\android 修改代碼,註

h5做的app原生app的區別

個人 目前 sign 引用 enc 語言 缺陷 情況 支持 之所以說h5做的app和原生app的區別,是因為一位博友的問題: 隨著 h5 的普及,是不是不再需要開發 app ? 我的回答是要分業務需求,分場合而定。 比如現在的微信小程序這麽流行,甚至也取代了不少app,但是

android/WINCE驅動、系統(framework)apk/app產品開發合作

本人有豐富的android/WINCE驅動和系統開發經驗,和精通android/WINCE系統與apk/app的同事組合的一個開發團隊,團隊特點: 1.精通android/WINCE驅動、系統(framework)和apk/app開發 2.涉及的CPU有,三星S3C2440、S3C2451、

Android Studio 之 Gradle 安裝配置編譯

目錄 前言 由於生產力很大一部分取決於生產工具的使用,為了緊跟時代的潮流,我也從Eclipse切換到Android Studio來進行Android開發。 使用Android Studio的時候,最先遇到的難點應該就是Gradle的安裝、配置

Android 把應用APK安裝包放到system/app下的方法

方法一: 然後開啟cmd命令編輯器,建議下載PowerCmd方便操作。 輸入adb shell回車 輸入su回車 輸入mount -o rw,remount/system回車 再開啟另外一個cmd命令編輯器 輸入adb push "你的apk絕對路徑" system/app

Android開發之原生APPWeb APP的區別個人見解

Native App開發Native App開發即我們所稱的傳統APP開發模式(原生APP開發模式),該開發針對IOS、Android等不同的手機作業系統要採用不同的語言和框架進行開發,該模式通常是由

android 如何預置APK到 data system/app目錄

一、如何將帶原始碼的APK預置進系統?1)     在 packages/apps 下面以需要預置的 APK的 名字建立一個新資料夾,以預製一個名為Test的APK 為例2)     將 Test APK的Source code 拷貝到 Test 資料夾下,刪除 /bin 和 /gen 目錄3)     在

h5app原生app有什麼區別?

H5開發的web APP和原生APP的區別有以下幾個方面: 一、開發方面 原生App ⊙ 每一種移動作業系統都需要獨立的開發專案 ⊙ 每種平臺都需要獨立的開發語言。Java(Android), Objective-C(iOS)以及Visual C++(Windows M

Android SDK的安裝與環境變數配置--安裝Android studio環境需要安裝SDKJDK

配置Andriod環境變數前提是要先安裝好JAVA環境 1、下載Android SDK,點選安裝,直接預設路徑即可! 

原生APPWeb APP的區別

aid pyw style 平臺 follow lan pre 不同 數據交互 Native App開發Native App開發即我們所稱的傳統APP開發模式(原生APP開發模式),該開發針對IOS、Android等不同的手機操作系統要采用不同的語言和框架進行開發,該模式通

關於system/priv-appsystem/app目錄以及許可權

        這篇文章將會說到有關android許可權,android簽名,所以會分為幾篇寫。         最近有個專案遇到一個問題,我把客戶的apk預置到了system/priv-app下,怎麼預置的?         在android.mk下加入一句LOCAL_

原生APP混合APP、web APP有什麼區別?

1.原生APP 原生APP是什麼?原生APP就是利用Android、iOS平臺官方的開發語言、開發類庫、工具進行開發。比如安卓的java語言,iOS的object-c 語言。在應用效能上和互動體驗上應該是最好的。 優點: 1、可訪問手機所有功能、可實現功能最齊全; 2

Web App Native App,哪個是趨勢?

一、Web App vs. Native App 比起手機App,網站有一些明顯的優點。 跨平臺:所有系統都能執行 免安裝:開啟瀏覽器,就能使用 快速部署:升級只需在伺服器更新程式碼 超連結:可以與其他網站互連,可以被搜尋引擎檢索 但是,現實是怎樣呢? (1)體驗差。手機App的

談一談Web AppNative App的優勢劣勢

對於第一次想要做APP的客戶來說,如何去做APP是一件頭疼的事情,我想做APP,但是又不知道APP開發是個怎樣的事情,下面就讓創息軟體的小編為您細細道來:在不就的將來,APP的生態鏈到底是Web App

h5頁面喚起app(iOSAndroid),沒有安裝則跳轉下載頁面

由於研究了之後,和同事溝通,找到一個地址進入,分別測試不同手機,機型,安卓進入安卓應用商店,ios進入app store ;所以直接貼了一個連結,即可。 下面方法,暫時沒用到,分享給需要的盆友。 COPY的方法如下,參考:------------------------

js判斷是否安裝某個appandroid),沒有則下載

現在經常有寫場景需要提示使用者下載app, 但是如果使用者已經安裝,我們希望是直接開啟app。 實際上,js是沒有判斷app是否已經安裝的方法的,我們只能曲線救國。 首先,我們需要有call起app的schema, 已經下載地址,比如: var schema = 'myApp://main';

Android H5App互動以及開啟相簿上傳圖片並顯示

一、H5連結開啟App 點選瀏覽器中的URL,如何啟動App呢? 1、HTML連結處理 首先做成HTML的內容,url格式如下: <a href="[scheme]://[host]/[path]?[query]">啟動應用程式</a> 說明:

android檢測手機是否安裝某個app

array dpa return ring bsp 包名 gen info true public static boolean isAvilible(Context context, String packageName){ //獲取packagemanager

移動端H5 判斷IOS還是Android 平臺

hone one 平臺 useragent ont navig navigator span ios 1.方法 (function($) { var UA = window.navigator.userAgent; if(/Android|HTC/i.te