1. 程式人生 > >JavaScript與Android之間的互動

JavaScript與Android之間的互動

javascript直接呼叫Android中的方法,例子:webview直接載入html,html中的javascript呼叫android端的方法。此例子可以有助於android開發者開發圖表類的專案,圖表不需要原生程式碼,只需用指令碼實現。圖表的指令碼生成可以參考:http://www.ichartjs.cn

Android端:

RIAExample.class

package com.example;  
  
import org.json.JSONArray;  
import org.json.JSONException;  
import org.json.JSONObject;  
  
import android.app.Activity;  
import android.os.Bundle;  
import android.util.Log;  
import android.webkit.WebView;  
  
public class RIAExample extends Activity{  
      
    private WebView web;  
    /** Called when the activity is first created. */  
    @Override  
    public void onCreate(Bundle savedInstanceState) {  
        super.onCreate(savedInstanceState);  
        setContentView(R.layout.main);  
          
        web = (WebView)this.findViewById(R.id.web);  
          
        web.getSettings().setJavaScriptEnabled(true);  
        web.getSettings().setBuiltInZoomControls(true);  
          
        web.addJavascriptInterface(this,"phone");  //通過“phone”與javascript互動;  
          
        web.loadUrl("file:///android_asset/form.html");  
    }  
      
    public String getData(){  
        return "[{name : 'IE',value : 35.75,color:'#9d4a4a'},{name : 'Chrome',value : 29.84,color:'#5d7f97'},{name : 'Firefox',value : 24.88,color:'#97b3bc'},{name : 'Safari',value : 6.77,color:'#a5aaaa'},{name : 'Opera',value : 2.02,color:'#778088'},{name : 'Other',value : 0.73,color:'#6f83a5'}]";  
    }  
      
    public JSONArray getJsonArray(){  
        try {  
            JSONArray data = new JSONArray();  
            JSONObject temp = new JSONObject();  
            temp.put("name", "other");  
            temp.put("value", 0.73);  
            temp.put("color", "#6f83a5");  
            data.put(temp);  
            JSONObject temp1 = new JSONObject();  
            temp1.put("name", "IE");  
            temp1.put("value", 35.75);  
            temp1.put("color", "#a5c2d5");  
            data.put(temp1);  
            JSONObject temp2 = new JSONObject();  
            temp2.put("name", "Chrome");  
            temp2.put("value", 29.84);  
            temp2.put("color", "#cbab4f");  
            data.put(temp2);  
            JSONObject temp3 = new JSONObject();  
            temp3.put("name", "Firefox");  
            temp3.put("value", 24.88);  
            temp3.put("color", "#76a871");  
            data.put(temp3);  
            JSONObject temp4 = new JSONObject();  
            temp4.put("name", "Safari");  
            temp4.put("value", 6.77);  
            temp4.put("color", "#9f7961");  
            data.put(temp4);  
            JSONObject temp5 = new JSONObject();  
            temp5.put("name", "Opera");  
            temp5.put("value", 2.02);  
            temp5.put("color", "#a55f8f");  
            data.put(temp5);  
            System.out.println(data.toString());  
            return data;  
        } catch (JSONException e) {  
            // TODO: handle exception  
            Log.e("TAG", "JSONException!!!");  
            return null;  
        }  
          
    }  
      
    public String getParams(){  
        return "{render : 'canvasDiv',data: data,title : '2012',legend : {enable : true},animation:true,showpercent:true,decimalsnum:2,width : 640,height : 480,radius:140}";  
    }  
      
    public String getType(){  
        return "new iChart.Pie2D(params)";  
    }  
      
      
    public void debugout(String info){  
        Log.i("ss",info);  
        System.out.println(info);  
    }  
    
}  

assets資料夾:

html原始碼:

<!DOCTYPE html>  
<html>  
    <head>  
        <meta charset="UTF-8" />  
        <title>ichartjs例子</title>  
        <script type="text/javascript" src="js/ichart-1.0.min.js"></script>  
      
        <script type="text/javascript">  
            window.onload = function(){  
                window.phone.debugout("inside js onload");  
                  
                $(function(){  
                    window.phone.debugout("----------in iChart.Pie2D function-------");  
                    var data_string = window.phone.getData();  
                    eval("var data =" + data_string);  
                      
                    var params_string = window.phone.getParams();  
                    eval("var params =" + params_string);  
                      
                    var type_string = window.phone.getType();  
                    eval("var chart =" + type_string);  
                      
                    chart.draw();  
                    window.phone.debugout("----------in iChart.Pie2D function, after draw()-------");  
                });  
                  
            };  
        </script>   
          
        </head>  
        <body>  
            <div id='canvasDiv'></div>  
        </body>     
</html>  

效果圖:


轉自:https://blog.csdn.net/cai1213/article/details/7942791?utm_source=copy 
 

相關推薦

JavaScriptAndroid之間互動

javascript直接呼叫Android中的方法,例子:webview直接載入html,html中的javascript呼叫android端的方法。此例子可以有助於android開發者開發圖表類的專案,圖表不需要原生程式碼,只需用指令碼實現。圖表的指令碼生成可以參考:htt

javascriptnative的互動

  在寫這篇文章之情,參考了很多,js與native的互動的資料,下面先給出我參考的一些東西,然後在給我我的程式碼。      使用場景:      1.)新增許可權     <uses-p

React NativeAndroid互動

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

javascript 後端互動常用函式梳理

1.splice()    方法用於插入、刪除或替換陣列的元素    city_list是個陣列 $(document).on('click','.del',function(){ // console.log($(this).index())

React NativeAndroid通訊互動

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

JavascriptC++之間的通訊 —— WebBrowser

1、C++呼叫WebBrowser中的全域性函式,變數等 (1) 從C++的角度看WebBrowser中的物件 WebBrowser中的物件大致可以分成兩類:DOM物件和使用Javascript建立的物件。但是無論是那種物件,從C++的角度來看,都是一些實現了IDispat

UnityAndroid互動之專案結構

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

JSAndroid原生互動

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

UnityAndroid互動,使用Android Studio匯出各Unity工程通用的Android外掛包

網上已經有很多關於Unity與Android之間的互動,教程基本都一樣,但是裡面有個都強調的重點是建立安卓工程時包名要和unity的bundle id要一致,這樣我就比較疑惑,如果一些

RN Android 程式碼互動

如果在開發中要用到一個 RN 沒有提供的元件,或者想複用 Java 程式碼已經實現的元件而不是用 JavaScript 再造一個車輪子,或者想使用 Java 高效的處理圖片、訪問資料庫、多執行緒程式設計等,你可以使用 RN 做到 JavaScript 與 Jav

【安卓物聯網】Arduino開發板Android之間通訊

關於Arduino開發板 Arduino是一款開源電子原型平臺,硬體部分是可以用來做電路連線的Arduino電路板。可以通過編寫程式,最後燒寫入開發板,配合上一些感測器,以及富有創造力的設計可以創造出很多神奇的東西。 在大三的時候,對物聯網的感興

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

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

Android中WebView載入本地Html,JavaScriptAndroid方法相互傳值

最近在做專案中,要使用HightChart來實現心電圖,於是,使用WebView載入本地html頁面,但是資料是通過藍芽裝置採集的資料,用Java程式碼獲取的資料,需要將資料傳到JavaScript中去,使用來繪製心電圖。以前都載入伺服器端返回的url地址,使用

Unity3DAndroid專案互動中無法監聽back鍵返回的解決辦法

 這兩天為解決unity3d與android專案整合中出現的無法監聽真機back實體鍵的問題找了很多資料,網上也有很多人遇到了這個問題,但是似乎都沒找到有效的解決方法。    實現的效果是從A_Activity跳轉到UnityPlayerNativeActi

從零開始實現UnityAndroid互動(一)

之前有SDK接入方面的需求,涉及到一些Unity與Android和iOS原生互動,雖然關於這方面的教程網上有不少,但第一次接觸還是遇到不少問題,這裡有很多坑與程式設計無關,很大一部分是配置不當造成的。在此記錄下來,做個備忘,也方便後來人學習。 第一步:環境搭建 下面是你需

Android中WebView載入本地Html,JavaScriptAndroid方法相互傳值(續)

接著上篇Android中WebView載入本地Html,與JavaScript與Android方法相互傳值,今天來一篇續集,為什麼要來續集呢,感覺自己還有沒有交代完的部分,於是在這裡再次交代一下,在Android中我們需要將給複雜的資料傳到Html頁面,我們該怎

unityAndroid互動初接觸

嵌入sdk是比較常見的吧,如接入廣告啊,新浪的分享...... 這些都需要接入sdk的,現在我們從最基本的做吧,其實這些和什麼引擎都是沒多大關係的,不管是unity,還是cosos2d......

Android】AppApp之間互動

今天剛好公司有一個Android無介面外掛化的列印App需求,隨便在這裡寫下一點心得 知識點分析: 無介面 可比本公司的其他App任意呼叫 隱藏App的啟動圖示 一. 外掛App: (一)修改ac

AndroidJavaScript、WebView之間互動學習

一、WebView呼叫Java //1.允許WebView載入jsmWebView.getSettings().setJavaScriptEnabled(true);//2.編寫js的介面 ------>這裡面有一個坑,注意 public class JavaStcript { @Javasc

Android實現FragmentActivity之間的資料互動

1概念 1 為什麼 因為Fragment和Activity一樣是具有生命週期,不是一般的bean通過建構函式傳值,會造成異常。 2 參考連結 Activity和Fragment傳遞資料的兩種方式 【Fragment精深系列4】Frag