Phonegap外掛編寫 Java物件導向方法
上一篇博文中我轉載了別人寫的phonegap的編寫方法,簡單回顧一下:
cordova中有Plugin這個類,編寫的外掛繼承於這個類,其中有exec這個方法,根據第二個引數的命令進行判斷,來決定該執行什麼動作。所有的外掛都要重寫這個exec方法。然後通過plugin.xml的修改,來增加外掛的記錄。然後便是寫js了。js通過cordova的exec這個方法來實現js和java之間的通訊。然後可以通過window。plugin。*來使用定義好的js外掛。很顯然,在java中的程式碼是帶著程式導向的思想的,而真正的物件導向的思想似乎是在js中體現的更加充分一點。
java是典型的物件導向的高階語言,這似乎顯得有點屈才。所以我找到了一種更加簡單的方法來開發phonegap外掛。使得js和java相關連只需要在主類(主類繼承自Droidap)通過appView的addJavascriptInterface()這個方法,便可以實現js和java的關聯。java程式碼還是按照物件導向的思想。那個方法的兩個引數,一個是java物件,一個是js物件,然後我們便可以在js中通過js來使用java物件。與那個java物件相關聯的其他java物件都可以獲取直接使用。這個interface就好比是js通向java的一個洞,你通過這個洞看到的java物件都可以在js中直接使用。
下面貼出一段例項程式:
package com.yelbosh.plugin;
import org.apache.cordova.DroidGap;
import android.content.Context;
import android.telephony.TelephonyManager;
import android.webkit.WebView;
import com.yelbosh.plugin.People;
public class MyClass {
private WebView mAppView;
private DroidGap mGap;
public MyClass(DroidGap gap, WebView view)
{
mAppView = view;
mGap = gap;
}
public String getTelephoneNumber(){
TelephonyManager tm =
(TelephonyManager) mGap.getSystemService(Context.TELEPHONY_SERVICE);
String number = tm.getLine1Number();
//String number = "11111";
return number;
}
public People getPeople(){
People mypeo = new People("hahah");
return mypeo;
}
}
這是定義的外掛,其中還使用了People這個類。那麼People類的定義如下:
package com.yelbosh.plugin;
public class People {
private String name;
public People(String name){
this.name = name;
}
public String getName(){
return this.name;
}
在主類中定義如下:
public class MainActivity extends DroidGap {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//setContentView(R.layout.activity_main);
super.loadUrl("file:///android_asset/www/test.html");
appView.addJavascriptInterface(new MyClass(this,this.appView), "MyCls");
}
在js程式碼中通過MyCls這個物件便可以直接使用MyClass物件,使用方法是一樣的。
注意加上window,這是全域性變數。因為是直接定義在瀏覽器中的。
a= window.MyCls.getPeople()
alert(a.getName())
就能得到想要的結果。
仔細想一想,其實編寫外掛的過程就是擴充套件瀏覽器的過程,使得js程式碼能夠知道那些外掛是幹什麼的。
那麼,phonegap的原理是什麼呢?
Android:通過攔截JavaScript的prompt命令實現從JavaScript到原生程式碼的通訊。JavaScript
prompt命令預設會彈出對話方塊,而PhoneGap的Android原生程式碼會攔截該對話方塊,並進一步取得JavaScript資料。相應的,Android上的PhoneGap內部,使用Java實現了一個HTTP伺服器,通過永續性的XHR連線,JavaScript可以不斷輪詢內部XHR伺服器儲存的資訊,從而實現了從Java到JavaScript方向的通訊。
phonegap外掛大多都是在功能上而並非是views上,所以你儘管隨便寫。
自己編寫好的外掛可以通過打包,供以後使用。但是注意在主類中做add宣告。或許這可以通過xml來實現。
相關文章
- Phonegap外掛編寫
- [Java物件導向]static方法Java物件
- 給Ionic寫一個cordova(PhoneGap)外掛
- 如何編寫不算差的物件導向程式?物件
- Java — 物件導向Java物件
- Java物件導向Java物件
- [Java物件導向]Java物件
- JAVA物件導向基礎--物件導向介紹Java物件
- Java:Java的物件導向Java物件
- 編寫node 外掛
- 編寫jq外掛
- java的物件導向Java物件
- Java物件導向(一)Java物件
- java物件導向(中)Java物件
- java物件導向(上)Java物件
- Java 物件導向概述Java物件
- java物件導向(2)Java物件
- java物件導向(1)Java物件
- java物件導向(3)Java物件
- java物件導向(4)Java物件
- java物件導向(5)Java物件
- Java物件導向概述Java物件
- JAVA物件導向思想Java物件
- 編寫基於jQuery的外掛的方法jQuery
- Java物件導向——類與物件Java物件
- JAVA(一)JAVA基礎/物件導向基礎/高階物件導向Java物件
- Perl的物件導向方法物件
- egg外掛編寫
- 如何編寫可維護的物件導向JavaScript程式碼物件JavaScript
- 物件導向-物件導向思想物件
- JAVA物件導向之多型Java物件多型
- JAVA物件導向基礎Java物件
- 二、Java之物件導向Java物件
- Java物件導向--多型Java物件多型
- java物件導向繼承Java物件繼承
- java物件導向(異常)Java物件
- java物件導向(包package)Java物件Package
- 【Java 基礎】——物件導向Java物件