<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Chasing an mobile web vision

    闖蕩在移動互聯(lián)網(wǎng)的世界中

    移動互聯(lián)網(wǎng)時代--Android上的一個例子

    我們來演示一個獲取聯(lián)系人,并用網(wǎng)頁展現(xiàn)出來的簡單例子。

     首先,我們在eclipse環(huán)境中創(chuàng)建一個Android project,我們的Activity名稱是com.example.RIAExample,并且修改界面的layout文件如下:

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:orientation
    ="vertical"
        android:layout_width
    ="fill_parent"
        android:layout_height
    ="fill_parent"
        
    >
    <WebView android:id="@+id/web"
     android:layout_width
    ="fill_parent" android:layout_height="fill_parent">
    </WebView>
    </LinearLayout>

    可以看到,界面中僅僅包含一個WebView控件。

     接下來,創(chuàng)建一個簡單的java類來描述一個聯(lián)系人的信息,它包含聯(lián)系人姓名和號碼。

     

    package com.example;

    import java.util.Vector;

    import android.app.Activity;
    import android.os.Bundle;
    import android.webkit.WebView;

    public class RIAExample extends Activity {
        
        
    private WebView web;
        
        
    //模擬號碼簿
        private Vector<Person> phonebook = new Vector<Person>();
        
    /** Called when the activity is first created. */
        @Override
        
    public void onCreate(Bundle savedInstanceState) {
            
    super.onCreate(savedInstanceState);
            setContentView(R.layout.main);
            
    this.initContacts();
            web 
    = (WebView)this.findViewById(R.id.web);
            web.getSettings().setJavaScriptEnabled(
    true);//開啟javascript設(shè)置,否則WebView不執(zhí)行js腳本
            web.addJavascriptInterface(this"phonebook");//把RIAExample的一個實例添加到j(luò)s的全局對象window中,
                                                            
    //這樣就可以使用window.phonebook來調(diào)用它的方法
            web.loadUrl("file:///android_asset/phonebook.html");//加載網(wǎng)頁
         
        }

        
        
    /**
         * 該方法將在js腳本中,通過window.phonebook.getContacts()進行調(diào)用
         * 返回的JavaArrayJSWrapper對象可以使得在js中訪問Java數(shù)組
         * 
    @return
         
    */

        
    public JavaArrayJSWrapper getContacts(){
            System.out.println(
    "fetching contacts data");
            Person[] a 
    = new Person[this.phonebook.size()];
            a 
    = this.phonebook.toArray(a);
            
    return new JavaArrayJSWrapper(a);
        
        }

        
        
    /**
         * 初始化電話號碼簿
         
    */

        
    public void initContacts(){
            Person p 
    = new Person();
            p.name 
    = "Perter";
            p.phone_number 
    = "8888888";
            phonebook.add(p);
            p 
    = new Person();
            p.name 
    = "Jack";
            p.phone_number 
    = "777777";
            phonebook.add(p);
           
        }

        
        
    /**
         * 通過window.phonebook.debugout來輸出js調(diào)試信息。
         * 
    @param info
         
    */

        
    public void debugout(String info){
            
            System.out.println(info);
        }

    }

    下面是html文件,它非常簡單。
    <html>
        
    <head>
            
    <script type="text/javascript" src="fetchcontacts.js"/>
    </head>
    <body>
        
    <div id = "contacts">
            
    <p> this is a demo </p>
        
    </div>
    </body>
    </html>

    而主角就是我們的javascript腳本fetchcontacts.js
    window.onload= function(){
        window.phonebook.debugout(
    "inside js onload");//調(diào)用RIAExample.debugout
        var persons = window.phonebook.getContacts();//調(diào)用RIAExample.getContacts()
        if(persons){//persons實際上是JavaArrayJSWrapper對象
            window.phonebook.debugout(persons.length() + " of contact entries are fetched");
            
    var contactsE = document.getElementById("contacts");
            
    var i = 0
            
    while(i < persons.length()){//persons.length()調(diào)用JavaArrayJSWrapper.length()方法
                
                pnode 
    = document.createElement("p");
                tnode 
    = document.createTextNode("name : " + persons.get(i).getName() + " number : " + persons.get(i).getNumber());//persons.get(i)獲得Person對象,然后在js里面直接調(diào)用getName()和getNumber()獲取姓名和號碼
                pnode.appendChild(tnode);
                contactsE.appendChild(pnode);
                i 
    ++;
            }

        }
    else{
            window.phonebook.debugout(
    "persons is undefined");
        }

        
    }


     例子很簡單,我加了注釋希望有助大家理解,其他我就不深入解釋了。
    我把例子的源代碼放上來,你可以下來試一試。

    RIADemo

    這個例子說明通過WebView.addJavascriptInterface方法,我們可以擴展JavaScript的API,獲取Android的數(shù)據(jù)。這樣,JS的粉絲就可以使用Dojo,JQuery,Prototy等這些知名的js框架來搭建android應(yīng)用程序來展現(xiàn)它們很酷很玄的效果!但是,目前addJavascriptInterface還不夠靈活強大,為什么呢?敬請關(guān)注第四篇“what next?”


    posted on 2009-03-14 16:16 勤勞的蜜蜂 閱讀(5486) 評論(6)  編輯  收藏

    評論

    # re: 移動互聯(lián)網(wǎng)時代--Android上的一個例子 2009-03-16 10:20 kingLv

    JavaArrayJSWrapper這個類在哪個包中,我找了半天沒找著,很郁悶  回復(fù)  更多評論   

    # re: 移動互聯(lián)網(wǎng)時代--Android上的一個例子 2009-03-16 10:22 kingLv

    謝謝你的一系列的android的blog,我也一直在看關(guān)于android的sdk  回復(fù)  更多評論   

    # re: 移動互聯(lián)網(wǎng)時代--Android上的一個例子 2009-03-16 10:35 勤勞的蜜蜂

    JavaArrayJSWrapper是我自己寫的,你下載我例子的源碼就看到實現(xiàn)了。
    如果你也關(guān)注這些東西,那我們一起來討論,我的聯(lián)系方式j(luò)errylee2002@hotmail.com以及jerrylee.li@gmail.com  回復(fù)  更多評論   

    # re: 移動互聯(lián)網(wǎng)時代--Android上的一個例子[未登錄] 2009-03-19 16:41 javaeye

    在s60的平臺上如何做OSGI的應(yīng)用?

      回復(fù)  更多評論   

    # re: 移動互聯(lián)網(wǎng)時代--Android上的一個例子 2009-03-19 21:19 勤勞的蜜蜂

    s60上如果有cdc的vm,就可以跑osgi,然后開發(fā)OSGi的應(yīng)用就和在desktop上一樣。  回復(fù)  更多評論   

    # re: 移動互聯(lián)網(wǎng)時代--Android上的一個例子 2009-04-13 16:26 mxx

    hello 我是mxx 一不留神發(fā)現(xiàn)你又開始寫blog了,呵呵呵呵...  回復(fù)  更多評論   


    只有注冊用戶登錄后才能發(fā)表評論。


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 香蕉视频在线免费看| 日本牲交大片免费观看| 暖暖免费中文在线日本| 亚洲另类自拍丝袜第1页| 国产亚洲综合久久系列| 国产又大又长又粗又硬的免费视频| 日本免费一区二区久久人人澡| 免费人成动漫在线播放r18| 456亚洲人成影院在线观| 亚洲影院在线观看| 国产亚洲AV手机在线观看| 免费萌白酱国产一区二区| 精品熟女少妇AV免费观看| 8x8x华人永久免费视频| 久久精品免费观看| a在线观看免费视频| 一个人看的www免费在线视频| 亚洲AV女人18毛片水真多| 亚洲一区二区三区写真| 亚洲国产视频网站| 亚洲精品综合久久中文字幕 | 亚洲一卡2卡3卡4卡国产网站 | selaoban在线视频免费精品| 日韩成人精品日本亚洲| 亚洲日本va一区二区三区| 亚洲一级特黄特黄的大片| 亚洲91精品麻豆国产系列在线| 亚洲大片免费观看| 亚洲精品伊人久久久久| 亚洲日本国产综合高清| 成人亚洲国产va天堂| 久久亚洲精品国产亚洲老地址 | 国产h视频在线观看网站免费| 97在线视频免费| 黄在线观看www免费看| 一个人看的www在线观看免费| 色窝窝免费一区二区三区 | 亚洲午夜电影一区二区三区| 亚洲区视频在线观看| 国产精品久久亚洲不卡动漫| 亚洲人成综合网站7777香蕉|