1. 程式人生 > >H5呼叫本地app

H5呼叫本地app

首先既然H5和本地app達到互動,所以得有個標識,通過這個標識來開啟app ,這時候就需要我們app端在manifest中的入口activity中新增scheme,也就是類似標識是的,這時候網頁端可以通過這個scheme來開啟我們的app,但是如果想要給我們app傳遞引數的話,那麼就不好使了,所以這時候還需要 新增host,就可以了,程式碼如下

             <intent-filter>
                <actionandroid:name="android.intent.action.MAIN" />
                <

categoryandroid:name="android.intent.category.LAUNCHER" />
            </intent-filter>
            
            <intent-filter>
                 <actionandroid:name="android.intent.action.VIEW" /> 
                <categoryandroid:name="android.intent.category.DEFAULT" />
                <
categoryandroid:name="android.intent.category.BROWSABLE"/>

                <dataandroid:scheme="abcd"

android:host="hello"/>
            </intent-filter>

這樣就可以了,H5就可以開啟我們的app了,當然既然人家給我們傳遞了引數,那麼我們這邊肯定要獲取的吧,所以我們可以在入口activity中如下操作,來獲取引數

             Intent intent = getIntent();
            Uri uri = intent.getData();
            String

 scheme = intent.getScheme();
            
            tv_web.setVisibility(View.GONE);
            idnoH = uri.getQueryParameter("idno");
            System.out.println(idnoH+"idno");

這裡的idno就是H5那麼傳遞引數的key,通過key來獲取value

    當然常用的還有使用webview來和js互動,這就很簡單了, 首先我們要先對webview進行一些設定, 第一條很關鍵,true表示和js可以互動, false反之

WebSettings set = mWebView.getSettings();
set.setJavaScriptEnabled(true);//設定是否直接javascript格式
set.setDefaultZoom(ZoomDensity.MEDIUM); //----設定縮放級別
set.setDefaultTextEncodingName("UTF-8");//---設定編碼格式
set.setAllowContentAccess(true);
set.setAppCacheEnabled(false);
set.setBuiltInZoomControls(false);
set.setUseWideViewPort(true);
set.setUseWideViewPort(true);
set.setLoadWithOverviewMode(true);   

    1. 先說下,js呼叫Android中的方法

//第一個引數是 供給js呼叫的類,第二個引數是js中要用到的呼叫這個類中的方法的物件,可以隨便起
mWebView.addJavascriptInterface(new FromAndroid(context), "AndroidToJs");

說一下,這裡的FromAndroid的這個類不能是內部類,不知為何,反正我先用的是內部類,是調不出來裡面的方法,

/**
* 這是js從android呼叫方法的類
* @author Administrator * */


public classFromAndroid{
Context context;
publicFromAndroid(Context context){
this.context = context;
}
@JavascriptInterface
publicvoidfromAndroid(String name){
MyToastUtils.show(context, name);
}
}

  在JS中程式碼就更簡單了

function showToast(){
AndroidToJs.fromAndroid("我是js呼叫android的吐司");
}

   完畢!!!

 2. 然後說下在Android中呼叫JS的方法

  在Android中的程式碼其實很簡單

//這是呼叫js中的方法
fragment7_btn.setOnClickListener(new OnClickListener() {
        @Override
public void onClick(View v) {
   mWebView.loadUrl("javascript:fromJS('嘎嘎')");
}
});

  說明下, 這裡fromJS()這個方法是JS中的方法名, 而裡面的引數是android部分可以傳給js的,然後就可以修改到網頁中的內容,當然也可以不傳,直接在js端寫死了,android部分呼叫,直接顯示就可以

 在JS端的程式碼

function fromJS(param){
alert(param);
document.getElementById('fromJS').innerHTML="我是android呼叫JS的方法";
showToast();
document.getElementById('fromJS').innerHTML=param;

}

 這裡的fromJS的這個ID其實就是一個div,為了就是直接顯示出來,還如上面說的一樣,如果不用android傳引數,直接fromJS()這個方法中param就不用寫,直接一個無參的方法,然後JS端這邊類似"我是android呼叫的JS方法" 這樣,寫死就好了; 如果想用android傳參,並顯示,直接把param賦值給div就好了

 完畢!!!!

相關推薦

H5呼叫本地app

首先既然H5和本地app達到互動,所以得有個標識,通過這個標識來開啟app ,這時候就需要我們app端在manifest中的入口activity中新增scheme,也就是類似標識是的,這時候網頁端可以通過這個scheme來開啟我們的app,但是如果想要給我們app傳遞引數的

個人總結之H5呼叫本地app

  首先既然H5和本地app達到互動,所以得有個標識,通過這個標識來開啟app ,這時候就需要我們app端在manifest中的入口activity中新增scheme,也就是類似標識是的,這時候網頁端可以通過這個scheme來開啟我們的app,但是如果想要給我們app傳遞引數的話,那麼就不好使了,所以這時候

H5開啟本地app應用

前言:業務場景,一個分享出去的h5介面通過頁面內某個事件的觸發,啟動目標app並執行相關邏輯處理或做其他頁面跳轉(如:跳應用市場下載應用等)。下面是我在企業開發過程中,實操的記錄,對於有這塊需求的朋友,可以來參考下。 Android實現通過瀏覽器點選連結開啟本地應用(APP

H5呼叫本地攝像頭拍攝照片

前言 最近專案中需要H5呼叫本地攝像頭拍照的需求。 程式碼 <canvas id="canvasCemara" width="500" height="500"></canvas

H5喚醒本地APP(谷歌地圖、百度地圖等相通)傳遞資料

前一段時間做了一個架設在微信上的打車軟體,司機端是在瀏覽器中開啟,網頁上的導航無法實時定位與語音播報,後因甲方強制要求,必須開啟本地谷歌地圖,並傳入使用者的起點終點,於是翻譯了相關部落格,完美解決,親測可用。 下面說一下相容性問題: IOS:sa

H5呼叫本地攝像頭

<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8"> <title></title> <script type="text

H5呼叫本地的照相機,攝像機等裝置

Htm程式碼:     <input type="file" accept="image/*" capture="camera">     <input type="file" accept="video/*" capture="camcorder">

微信中通過頁面(H5)直接打開本地app的解決方案

ids 支持 完全 系統默認 domain rdquo bili 通過 解決 簡述 微信中通過頁面直接打開app分為安卓版和IOS版,兩個的實現方式是完全不同的。 安卓版實現:使用騰訊的應用寶,只要配置了“微下載”之後,打開鏈接騰訊會幫你判斷本地

Android呼叫本地js方法(不顯示h5介面)

有得時候在開發過程中會遇到,需要呼叫js的一些方法,又不需要顯示h5介面。比如,在你開發的產品中,PC、h5,移動端(Android、IOS)都需要使用到同一個演算法,而且這個演算法又非常的複雜,若每個端都寫一邊,不僅非常浪費時間,而且如果演算法設計到複雜的數字計算,那麼就可

input type=“file” 在移動端H5頁面實現呼叫本地相簿、拍照、錄音

<input type="file" accept="image/*" mutiple="mutiple" capture="camera" /> 三個屬性: accept - 規定可提交的檔案型別。 capture - 系統所捕獲的預設裝置。camera(照相機),camc

H5實現呼叫本地攝像頭實現實時視訊以及拍照功能

getUserMedia API HTML 5 的getUserMedia API提供了訪問媒體的能力, 基於該特性, 開發者可以不依賴任何瀏覽器外掛下去訪問視訊和音訊等裝置. 舊版API : navigator.getUserMedia  新版API : navi

通過Html網頁呼叫本地安卓app程式程式碼

前段時間寫一些移動端的專案,正好專案中遇到與native互動的需求,特此將其整理下來: 一. 通過html頁面開啟Android本地的app 首先在編寫一個簡單的html頁面 <html> <head>

基於應用寶實現微信h5頁面中開啟本地app,如果沒有跳轉下載頁面的解決方案

首先這個方法是基於微信中開啟的h5頁面的,如果是外接瀏覽器的話則無論是否有該app都會執行下載 <a href="http://d.xiaojukeji.com/c/73852">

通過H5(瀏覽器/WebView/其他)喚起本地app

  前兩天接到一個無線的需求,我這個小白可是忙活了好幾天……在頁面上有一個連線, 如果使用者安裝了APP,則點選開啟對應的APP如果使用者沒有安裝,則點選開啟對應的設定連線.上網搜尋了一下,基本都說可以實現,但是實際情況卻不樂觀.   當然只是其中的一個需求

如何通過Html網頁呼叫本地安卓app

如何使用html網頁和本地app進行傳遞資料呢?經過研究,發現還是有方法的,總結了一下,大致有一下幾種方式 一、通過html頁面開啟Android本地的app 1、首先在編寫一個簡單的html頁面 <html> <head>

通過uri呼起本地app

android pre bsp .get popu 手機 efault eno theme 1、在Android本地app清單文件裏配置 <activity android:name="com.mdj.ui.WelcomeActivity

環法競猜項目:H5與原生APP交互方式

一個 lua shp stringify response else all alert 延遲 APP調用H5函數 (1)登錄功能——調起APP的登錄頁面 操作:點擊h5頁面的"去登錄"按鈕,執行appLogin函數,檢測window對象是否有WebViewJavascri

H5 打開App

val meta dai 如果 title utf-8 下載鏈接 type 情況下 1、sheme解決方案:只能在safari瀏覽器打開,並且必須App安裝的情況下。IOS必須配置為 "yidiandai://" 才可以。 <!DOCTYPE html> &l

H5+混合移動app應用開發——開篇

分享圖片 前三 mvvm 入門 混合應用 接口 blank alt jquery 前言 經過2個多月的艱苦奮鬥,app的第一個版本已經快完工了,期間遇到了太多的坑,作為一個喜歡分享的人,我當然不會吝嗇分享這爬坑歷程。不要問我有多坑,我會告訴你很多,很多..... 過去一

H5本地存儲

-- ora 添加 IT ESS session .get 本地存儲 覆蓋 local storage 1.添加 localStorage.name = ‘xiaoyi‘;//存 sessionStorage.name = ‘lili‘;//存 sessionStor