1. 程式人生 > >JS與Android原生互動

JS與Android原生互動

JSAndroid原生互動

在專案的開發中我們會遇到android 原生與Html5的混合開發,我們可能會需要在android中呼叫js裡面的方法進行資料互動或其他的特殊處理,又或者在Html頁面呼叫android的原生的統一彈框或其他處理。這時候我們就需要給android和js設定介面,進行相互的呼叫。

1android中設定JS對應的物件類JavaScriptObject

Android中設定JS的呼叫類,用於處理js呼叫android的方法,方法需標示@JavascriptInterface,否則不能呼叫到;

public class JavaScriptObject
{
   public static final String obj = "javaObj";   //統一的類名
   Context mContxt;

   public JavaScriptObject(Context mContxt)
   {
      this.mContxt = mContxt;
   }

   @JavascriptInterface
   public void funFromAndroid()
   {
      Toast.makeText(mContxt, "I am android!", Toast.LENGTH_LONG).show();
   }
   
   @JavascriptInterface
   public void openDialog()
   {
      CenterPopDialog dialog = new CenterPopDialog(mContxt,"標題","人生若只如初見!",2,"cancel","ok")
      {
         @Override
         public void left()
         {
            dismiss();
         }

         @Override
         public void right()
         {
            dismiss();
         }
      };
      dialog.show();
   }
}

2、webview中設定

webView.addJavascriptInterface(new JavaScriptObject(WebViewDef.this), JavaScriptObject.obj);

3、JS中呼叫Android的方法

<html>
   <head>
      <meta charset="utf-8">
      <meta name="viewport" content="initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />
      <title></title>
      <script type="text/javascript">
         function fromAndroid()
         {
            javaObj.funFromAndroid();
         }

	function funFromJS(msg)
	{
  	   alert(msg);
	}
      </script>
   </head>
   <body>
      <button type="button" onclick="fromAndroid()">提示</button>
      <button type="button" onclick="javaObj.openDialog()">彈出dailog</button>
   </body>
</html>


4、Android呼叫JS的方法

webView.loadUrl(“javascript:funFromJS(‘”+msg+”’)”);





相關推薦

JSAndroid原生互動

JS與Android原生互動 在專案的開發中我們會遇到android 原生與Html5的混合開發,我們可能會需要在android中呼叫js裡面的方法進行資料互動或其他的特殊處理,又或者在Html頁面呼

js android互動(方法互呼叫) 和androidjs傳遞值, jsandroid傳引數 事件攔截看上一篇

mail_detail_v2.html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewpor

H5android原生JS互動

公司最近接手了一個電信的專案,其中最關鍵的技術就是H5頁面與android的互動。因為之前專案中H5與原生介面的載入動畫是分開寫的,導致大小以及效果有差距,所以我才有接觸兩者之間互動的學習機會。簡單

WebViewJavascriptBridge實現jsandroid和ios原生交互

WebViewJavascriptB Android IOS js 1、實現原生與js交互 <!-- 申明交互 這段代碼固定必須有 --> function setupWebViewJavascriptBridge(callback) { //android使用

ios jsoc原生WKWebView方法注入及互動傳值

    上篇文章中,我們整理了關於WKWebView的詳細使用,包含進度條、獲取web title等等內容,這篇文章我們整理下,專案中,我們可能使用到的oc 與 js 原生互動場景下的使用.如有興趣,

FlutterAndroid原生程式碼互動

一、概述 Flutter正式版已經出了一段時間了,作為剛入門的一個菜鳥而言,我還需要更多的學習。 最近開始的flutter專案用到了分享功能,但是到目前為止,微信,QQ等還沒有出對flutter分享的SDK,這就需要用到flutter與Android和ios的原生互動。下面僅關於fl

FlutterAndroid原生互動

Flutter釋出Preview版本後熱度持續上升,但是仍然有很多不足之處,所有前期還是採用與原生結合的混合開發,那就需要了解Flutter與原生的互動的一些方法。 原生啟動Flutter Activity 新建Flutter 專案預設啟動MainAct

h5頁面Android原生頁面互動

Android頁面內巢狀h5頁面已經是隨處可見了。在Android原生頁面和h5頁面的取捨上那些不是本文的重點。重點是,如此多的頁面用網頁來寫,那麼必定涉及到網頁與原生的互動,俗稱js互動。 目標:h5頁面點選按鈕Android端接收到網頁傳給的json資料。

QT通過JSHTML的互動

標頭檔案加入 QT += core gui webenginewidgets webchannel 通過QWebChannel與JS互動原理 QWebEnginePage *page = new QWebEnginePage(this); webView->setPage

React NativeAndroid互動

在使用RN進行跨平臺開發的過程中,經常會設計到跨平臺呼叫相關的內容,而在於RN進行互動的時候,最核心的就是RN提供的Component和Module。 其中,Component是專門將Native的UI暴露出來供JS呼叫的,而Native Module則是將N

React Native之js呼叫Android原生使用Callback傳遞結果給js

1 問題 上面的文章只是呼叫安卓原生顯示Toast,但是我們一般會需要呼叫安卓的程式碼然後去拿回結果給js,但是我們知道在android層js呼叫的這個函式返回值必須的void,所以我們需要用到Callback,Callback一般用於同步,也就是說直接呼叫

以太坊DApp開發:web3.js智慧合約互動

前言 環境準備 ubuntu 14.0.4(16.0.4), 64位 還需要安裝以太坊相關的環境: nodejs truffle solidity testrpc 編寫智慧合約 首先在使用者目錄(home)下新建conference目錄(任意目錄都

ReactNative Android 原生傳引數 ReadableMap WritableMap

ReadableMap 主要是rn給原生傳遞引數時使用 (1)rn給原生傳遞引數 toast = () => { let obj={ id:1, name:"xi

node.js學習筆記(7)--Node.jsMongoDB簡單互動

1.建立工程 E:\test>express mongo -e create : mongo create : mongo/package.json create : mon

React NativeAndroid通訊互動

剛建立的React Native 微信公眾號,歡迎微信掃描關注訂閱號,每天定期會分享react native 技術文章,移動技術乾貨,精彩文章技術推送。同時可以掃描我的微信加入react-native技術交流微信群。歡迎各位大牛,React Native技術愛好者加入

Jsandroid webview遭遇過的坑

Uncaught TypeError: Object [object Object] has no method 可能產生該情況有幾種可能 1、安全限制問題 如果只在4.2版本以上的機器出問題,那麼就是系統處於安全限制的問題了。Android文件這

用web3.js智慧合約互動(修改版)

工具:Truffle v4.0.4   ganache-1.1.0-beta(ui介面版) nodejs 8.9.4 npm 5.6.0    web3 1.0.0 思路: 1、先用truffle建立一個以太坊智慧合約專案,部署在ganache測試網路。 2、用np

用web3.js智慧合約互動

工具:Truffle v4.0.4  ganache-1.1.0-beta(ui介面版)nodejs 8.9.4npm 5.6.0   web3 1.0.0思路:1、先用truffle建立一個以太坊智慧合約專案,部署在ganache測試網路。2、用npm建立另外一個專案,使用

cocos-jsandroid平臺互相呼叫

cocos-js中呼叫android平臺的介面:if (cc.sys.OS_ANDROID == cc.sys.os) { jsb.reflection.callStaticMethod("org/cocos2dx/javascript/AppActivity", "

UnityAndroid互動之專案結構

概述 為什麼會寫這樣的文章,原因是我們在使用Unity做開發的時候少不了跟其它平臺做互動,特別是當前流行的Android和iOS。但是由於Unity官方文件缺少這方便詳細的資料,以及每個人的開發水平也參差不齊,再加上涉及到多平臺的互動(不同平臺的開發者不甚瞭解