Android中呼叫js方法及js中呼叫本地方法
Android中內建了WebKit模組,而該模組的Java層檢視類就是WebView,所有需要使用Web瀏覽器功能的Android都需要建立該檢視類物件顯示和處理請求的網路資源。目前WebKit支援Http、Https、Ftp和JavaScript請求。下面我們重點看一下如何在Android中呼叫JavaScript方法以及如何在js中呼叫本地方法。
1、在Assets下放一個簡單的html檔案jstest.html
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html40/strict.dtd"> <HTML> <HEAD> <meta name="viewport" content="width=device-width, target-densitydpi=device-dpi" /> <META http-equiv="Content-Type" content="text/html; charset=UTF-8"> <script> function showMsg(){ alert("hello world!"); } function showMsgInAndroid(){ myjs.showMsg('hello in android!'); } </script> </HEAD> <BODY> <span>測試js使用</span> <button id='btntest' onclick='showMsgInAndroid()'>呼叫android方法</button> </BODY> </HTML>
2、佈局檔案main.xml
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout android:id="@+id/rl_main" android:layout_width="fill_parent" android:layout_height="fill_parent" xmlns:android="http://schemas.android.com/apk/res/android" > <WebView android:id="@+id/wv_test" android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_above="@+id/btn_showmsg"/> <Button android:id="@+id/btn_showmsg" android:layout_width="200dip" android:layout_height="40dip" android:layout_alignParentBottom="true" android:layout_centerHorizontal="true" android:text="呼叫html中js方法"/> </RelativeLayout>
3、然後是Activity,MainActivity.java
package com.harold.jstest; import com.harold.base.JSKit; import android.app.Activity; import android.os.Bundle; import android.os.Handler; import android.view.View; import android.view.View.OnClickListener; import android.webkit.WebChromeClient; import android.webkit.WebView; import android.widget.Button; public class MainActivity extends Activity { private WebView mWebView; private Button btnShowInfo; private JSKit js; private Handler mHandler = new Handler(); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); //初始化控制元件 mWebView = (WebView) findViewById(R.id.wv_test); btnShowInfo = (Button) findViewById(R.id.btn_showmsg); //例項化js物件 js = new JSKit(this); //設定引數 mWebView.getSettings().setBuiltInZoomControls(true); //內容的渲染需要webviewChromClient去實現,設定webviewChromClient基類,解決js中alert不彈出的問題和其他內容渲染問題 mWebView.setWebChromeClient(new WebChromeClient()); mWebView.getSettings().setJavaScriptEnabled(true); //把js繫結到全域性的myjs上,myjs的作用域是全域性的,初始化後可隨處使用 mWebView.addJavascriptInterface(js, "myjs"); mWebView.loadUrl("file:///android_asset/jstest.html"); btnShowInfo.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { mHandler.post(new Runnable() { @Override public void run() { //呼叫 HTML 中的javaScript 函式 mWebView.loadUrl("javascript:showMsg()"); } }); } }); } }
4、最後是繫結全域性js的類JSKit.java
package com.harold.base;
import android.widget.Toast;
import com.harold.jstest.MainActivity;
public class JSKit {
private MainActivity ma;
public JSKit(MainActivity context) {
this.ma = context;
}
public void showMsg(String msg) {
Toast.makeText(ma, msg, Toast.LENGTH_SHORT).show();
}
}
例子比較簡單,程式碼裡都加了註釋,這裡就不多說了,本示例用的本地的html,如果訪問網路中的網頁,別忘記在AndroidManifest.xml中加許可權
<uses-permission android:name="android.permission.INTERNET"/>
原始碼在下面:相關推薦
Android中呼叫js方法及js中呼叫本地方法
Android中內建了WebKit模組,而該模組的Java層檢視類就是WebView,所有需要使用Web瀏覽器功能的Android都需要建立該檢視類物件顯示和處理請求的網路資源。目前WebKit支援Http、Https、Ftp和JavaScript請求。下面我們重點看一下如
Delphi中WebBrowser判斷頁面及JS ajax是否載入完成-轉
在一個程式中需要判斷WebBrowser開啟的頁面是否載入完成,通常的做完是使用Busy屬性,程式碼如下: while WebBrowser1.Busy do Application.ProcessMessages; 對於多框架: procedure TForm1.WebBrowser1Na
支援android&ios高度自適應及JS相互呼叫的元件react-native-webview2
本專案是WebView 或 Web 元件,支援Android、iOS, 支援auto height高度自適應及在html頁面和RN元件之間call js相互呼叫js方法,very useful &a
linux伺服器中不支援soap及bcmul函式的結局方法
新的程式裡用了webserice介面,部到伺服器,先是提示:bcmul() 函式不可用,網上搜索一番,得知這是php的高精度函式,需要在編譯php的時候加入此模組,於是在編譯腳本里增添 “–enable-bcmath” 後重新編譯、重啟apache然後此錯誤解決; 然後有遇到報錯“Class ‘SoapCl
建立表、修改表、刪除表的方法 ,建立主鍵約束、外來鍵約束、使用者自定義約束的方法 ,建立查詢表的方法及使用截斷表的方法,理解約束在資料庫中的作用
撰寫人——軟工二班——陳喜平 – 實驗內容: – 一、建立表 – 建立圖書館管理系統所涉及的表 – 建立產品銷售系統所涉及的表 – 圖書表book(bid,bname,price,qty) – 書庫表lib(lid,lname,address) – 讀者表reader
較常用的Math方法及ES6中的擴充套件
記錄下與Math有關的常用方法,如:求最大值、最小值等,或者是保留幾位數啥的 1.資料 let floatA = 2.325232; let floatB = 2.3456; let temporaryArray = [1, 2, 5, 6, 3]; let minusNu
pycharm 永久破解方法及Ubuntu中桌面快捷方式設定
1、下載 https://pan.baidu.com/s/119UO4SGIEW_cxf0LmZzx3w 並將 JetbrainsCrack-3.1-release-enc.jar 放置到 pycharm安裝目錄的\bin目錄下(位置可隨意,只要配置檔案填寫相對
Delphi 中自定義異常及異常處理的一般方法
delphi中異常定義如下: TCustomException = class(Exception) private public constructor Create(const Msg: string );
JavaScript給按鈕繫結點選事件(onclick)的方法及js常見事件
本文例項講述了JavaScript給按鈕繫結點選事件(onclick)的方法。分享給大家供大家參考。具體分析如下: 我們可以通過設定按鈕的onclick屬性來給按鈕繫結onclick事件 <!DOCTYPE html> <html>
[圖形學]VS2017中OpenGL的下載及安裝中的異常
1、放dll檔案:C:\Windows\SysWOW64 或C:\Windows\windows32 2、lib和h:C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\VC\Tools\MSVC\ lib放在lib資料夾下。
二十種特徵變換方法及Spark MLlib呼叫例項(Scala/Java/python)(一)
Tokenizer(分詞器) 演算法介紹: Tokenization將文字劃分為獨立個體(通常為單詞)。下面的例子展示瞭如何把句子劃分為單詞。 RegexTokenizer基於正則表示式提供更多的劃分選項。預設情況下,引數“pattern”為
三種特徵選擇方法及Spark MLlib呼叫例項(Scala/Java/python)
VectorSlicer 演算法介紹: VectorSlicer是一個轉換器輸入特徵向量,輸出原始特徵向量子集。VectorSlicer接收帶有特定索引的向量列,通過對這些索引的值進行篩選得到新的向量集。可接受如下兩種索引 1.整數索引,setIndice
二十種特徵變換方法及Spark MLlib呼叫例項(Scala/Java/python)(二)
VectorIndexer 演算法介紹: VectorIndexer解決資料集中的類別特徵Vector。它可以自動識別哪些特徵是類別型的,並且將原始值轉換為類別指標。它的處理流程如下: 1.獲得一個向量型別的輸入以及maxCategories引數。 2.基於
【Android高階】檢視手機及應用記憶體狀況的方法
我 們知道,android程式記憶體一般限制在16M,當然也有24M的,而android程式記憶體被分為2部分:native和dalvik,dalvik 就是我們平常說的java堆,我們建立的物件是在這裡面分配的,而bitmap是直接在native上分配的,對於記憶體的限制
Python中缺失值分類及Pandas中缺失資料處理函式
一、Python中缺失值分類 Python中有三種缺失值(空值): 形式 含義 None Python內建的None值,如建立一個空的列表list=[] NA 在pandas中,將缺失值表示為NA,表示不可用not available,主
DOM中的事件型別及HTML5中的事件型別
DOM中事件型別有: UI(使用者介面)事件,使用者與頁面上元素互動時觸發 ; 焦點事件:當元素獲得或失去焦點時觸發; 滑鼠事件:當用戶通過滑鼠在頁面上執行操作時觸發; 滾輪事件:當使用滑鼠
[android ndk]android studio動態庫生成及jni底層呼叫步驟
android studio動態庫生成及jni底層呼叫步驟 1、建立一個用於關聯c程式碼的類(對映類) 方法名需要加native修飾 public class NDKUtils { public static native int getSum
vue跨域解決方法 及設置api路徑方法
fun tab cti query 跨域請求 geo var nco target vue項目中,前端與後臺進行數據請求或者提交的時候,如果後臺沒有設置跨域,前端本地調試代碼的時候就會報“No ‘Access-Control-Allow-Origin‘ header is
Linux:VMware Tools安裝方法及共享資料夾設定方法
正確安裝好VMware Tools後,可以實現主機與虛擬機器之間的檔案共享, 可以設定共享資料夾,以及在主機與虛擬機器之間直接進行復制黏貼的操作。 安裝方法: 選擇"虛擬機器"—>"重新安裝VMware Tools" 彈出以下介面: 滑鼠右
VMware Tools安裝方法及共享資料夾設定方法
正確安裝好VMware Tools後,可以實現主機與虛擬機器之間的檔案共享, 可以設定共享資料夾,以及在主機與虛擬機器之間直接進行復制黏貼的操作。 安裝方法: 選擇"虛擬機器"—>"重新安裝VMware Tools" 彈出以下介面: 滑鼠右鍵點選V