導航:首頁 > 操作系統 > androidjs與java交互

androidjs與java交互

發布時間:2024-10-20 11:08:05

『壹』 如何在android平台上使用JS直接調用java方法

在Cocos2d-js 3.0beta中加入了一個新特性,在Android平台上我們可以通過反射直接在js中調用Java的靜態方法。使用方法很簡單:

那麼這個Test類的完整類名應該是org/cocos2dx/javascript/Test,注意這里必須是斜線/,而不是在Java代碼中習慣的點。

(2)方法名

方法名很簡單,就是方法本來的名字,例如sum方法的名字就是sum。

(3)方法簽名

方法簽名稍微有一點復雜,最簡單的方法簽名是()V,表示一個沒有參數沒有返回值的方法。其他一些例子:

(I)V表示參數為一個int,沒有返回值的方法;

(I)I表示參數為一個int,返回值為int的方法;

(IF)Z表示參數為一個int和一個float,返回值為boolean的方法;

現在有一些理解了吧,括弧內的符號表示參數類型,括弧後面的符號表示返回值類型。因為Java是允許函數重載的,可以有多個方法名相同但是參數返回值不同的方法,方法簽名正是用來幫助區分這些相同名字的方法的。

(4)參數

參數可以是0個或任意多個,直接使用js中的number,bool和string就可以。

(5)使用示例

將會調用上面的Test類中的靜態方法:

//調用hello方法

jsb.reflection.callStaticMethod("org/cocos2dx/javascript/Test","hello","(Ljava/lang/String)V","thisisamessagefromjs");

//調用第一個sum方法

varresult=jsb.reflection.callStaticMethod("org/cocos2dx/javascript/Test","sum","(II)I",3,7);

cc.log(result);//10

//調用第二個sum方法

varresult=jsb.reflection.callStaticMethod("org/cocos2dx/javascript/Test","sum","(I)I",3);

cc.log(result);//5

(6)注意

另外有一點需要注意的就是,在android應用中,cocos的渲染和js的邏輯是在gl線程中進行的,而android本身的UI更新是在app的ui線程進行的,所以如果在js中調用的Java方法有任何刷新UI的操作,都需要在ui線程進行。

例如,在下面的例子中會調用一個Java方法,彈出一個android的Alert對話框。

//給我們熟悉的AppActivity類稍微加點東西

{

privatestaticAppActivityapp=null;

@Override

publicvoidonCreate(BundlesavedInstanceState){

super.onCreate(savedInstanceState);

app=this;

}

(finalStringtitle,finalStringmessage){

//這里一定要使用runOnUiThread

app.runOnUiThread(newRunnable(){

@Override

publicvoidrun(){

AlertDialogalertDialog=newAlertDialog.Builder(app).create();

alertDialog.setTitle(title);

alertDialog.setMessage(message);

alertDialog.setIcon(R.drawable.icon);

alertDialog.show();

}

});

}

}


在js中調用

jsb.reflection.callStaticMethod("org/cocos2dx/javascript/AppActivity","showAlertDialog","(Ljava/lang/String;Ljava/lang/String;)V","title","hahahahha");

這樣調用就可以看到一個android原生的Alert對話框了。

『貳』 在Android上怎樣實現JAVA和JS交互

Android中java與js交互是通過webView來交互的。

WebView(網路視圖)能載入顯示網頁,可以將其視為一個瀏覽器。它使用了WebKit渲染引擎載入顯示網頁,實現WebView有以下兩種不同的方法:
第一種方法的步驟:
1.在要Activity中實例化WebView組件:WebView webView = new WebView(this);
2.調用WebView的loadUrl()方法,設置WevView要顯示的網頁:
互聯網用:webView.loadUrl("http://www.google.com");
本地文件用:webView.loadUrl("file:///android_asset/XX.html"); 本地文件存放在:assets 文件中
3.調用Activity的setContentView( )方法來顯示網頁視圖
4.用WebView點鏈接看了很多頁以後為了讓WebView支持回退功能,需要覆蓋覆蓋Activity類的onKeyDown()方法,如果不做任何處理,點擊系統回退剪鍵,整個瀏覽器會調用finish()而結束自身,而不是回退到上一頁面
5.需要在AndroidManifest.xml文件中添加許可權,否則會出現Web page not available錯誤。
<uses-permission android:name="android.permission.INTERNET" />

第二種方法的步驟:
1、在布局文件中聲明WebView
2、在Activity中實例化WebView
3、調用WebView的loadUrl( )方法,設置WevView要顯示的網頁
4、為了讓WebView能夠響應超鏈接功能,調用setWebViewClient( )方法,設置 WebView視圖
5、用WebView點鏈接看了很多頁以後為了讓WebView支持回退功能,需要覆蓋覆蓋Activity類的onKeyDown()方法,如果不做任何處理,點擊系統回退剪鍵,整個瀏覽器會調用finish()而結束自身,而不是回退到上一頁面
6、需要在AndroidManifest.xml文件中添加許可權,否則出現Web page not available錯誤。
<uses-permission android:name="android.permission.INTERNET"/>

『叄』 js中可以調用java代碼嗎

js不能直接調用java代碼。
可以通過頁面提交後台的方式,間接調用後台的服務java代碼。
也可以通過ajax的方式,調用後台的服務java代碼。
兩種方式稍有差別,不過都是前後台的通信交互。

閱讀全文

與androidjs與java交互相關的資料

熱點內容
加密貨幣前端系統 瀏覽:530
河北白溝dns伺服器地址雲空間 瀏覽:207
電子護照加密 瀏覽:710
峰雲伺服器獲取不到列表 瀏覽:880
河南文件加密系統怎麼選 瀏覽:662
東芝美芝壓縮機 瀏覽:688
武漢app製作平台哪裡做得好 瀏覽:643
未編譯此類問題怎麼解決 瀏覽:247
建行數字人民幣app哪裡下載 瀏覽:506
搞笑程序員漫畫 瀏覽:155
數控立車偏心圓編程實例 瀏覽:164
android默認不彈出鍵盤 瀏覽:731
加密空投信息網站 瀏覽:317
阧陰短視頻app在哪裡找 瀏覽:402
vue預編譯部分頁面 瀏覽:882
linux批量解壓gz 瀏覽:580
論文中的演算法描述 瀏覽:815
增量背離量指標源碼 瀏覽:512
安卓手機為什麼切屏 瀏覽:278
加密市場介紹 瀏覽:606