JCFXBL与WebView整合打造安卓应用服务平台(js -java/andriod通信window.JavaObj)

一、应用背景介绍

        最近由于要开发一个运行在Android环境上的设区级的服务平台,由于里面的功能模块需要经常更新,因此就打算采用WEB方式来开发。简单来说,就是开发一个网站。只是这个网站是伪装在一个APK里的而已。

 

 

二、智能终端应用环境介绍

 

三、采用Html+JavaScript开发WebAPP的优缺点分析

 优点:

       (1)将TCP 或 UDP封装在Java函数里,然后提供JS调用接口,可以使得WebApp很方便的采用UDP或TCP与远程服务器进行socket通信;

       (2)在移动终端(嵌入式)环境编程下,经常要获取MAC、IP、设备ID等等信息,如果仅仅靠JavaScript本身的代码是很难实现的,提供安卓本身的APK编程就可以很容易实现了;

       (3)移植方便,如果要把这些WebAPP应用移植到IOS、或windows上,仅仅只需要重新实现这个“外壳”而已。

 

   缺点

 

四、在JavaScript中通过JS函数调用APK里的Java方法

 (1) APK程序WebView关键代码如下

[java]  view plain copy
  1. webview1.getSettings().setJavaScriptEnabled(true);  
  2. webview1.setWebChromeClient(new WebChromeClient());  
  3. webview1.addJavascriptInterface(this"JavaObj");         

(2)JavaScript调用APK里的Java函数关键代码

[javascript]  view plain copy
  1. function btnTS_onclick(){  
  2.    var obj = window.JavaObj;  
  3.    obj.btn1Click();  
  4. }  

程序效果说明:

    通过在网页里添加一个Button按钮,当用户点击这个按钮时,他会调用APK本身的一个Button按钮的事件。

完整的APK代码如下:

[java]  view plain copy
  1. package a.b;  
  2.   
  3. import android.app.Activity;  
  4. import android.os.Bundle;  
  5. import android.os.Handler;  
  6. import android.os.Message;  
  7. import android.view.View;  
  8. import android.view.Window;  
  9. import android.view.WindowManager;  
  10. import android.view.View.OnClickListener;  
  11. import android.webkit.WebChromeClient;  
  12. import android.webkit.WebView;  
  13. import android.widget.Button;  
  14. import android.widget.Toast;  
  15.   
  16. public class WebtestActivity extends Activity {  
  17.     /** Called when the activity is first created. */  
  18.     WebView webview1;  
  19.     Button button1;  
  20.     Handler handler;  
  21.   
  22.     @Override  
  23.     public void onCreate(Bundle savedInstanceState) {  
  24.         super.onCreate(savedInstanceState);  
  25.         requestWindowFeature(Window.FEATURE_NO_TITLE);  
  26.         getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,  
  27.                 WindowManager.LayoutParams.FLAG_FULLSCREEN);  
  28.         setContentView(R.layout.main);  
  29.         webview1 = (WebView) findViewById(R.id.webView1);  
  30.         button1 = (Button) findViewById(R.id.button1);  
  31.         button1.setOnClickListener(new OnClickListener() {  
  32.   
  33.             public void onClick(View v) {  
  34.                 Toast.makeText(getApplicationContext(), "button1 is click",  
  35.                          Toast.LENGTH_SHORT).show();  
  36.             }  
  37.         });  
  38.           
  39.         handler = new Handler() {  
  40.   
  41.             public void handleMessage(Message msg) {  
  42.                 switch (msg.what) {  
  43.                     case 0:{  
  44.                         button1.performClick();  
  45.                         break;  
  46.                     }  
  47.                 }  
  48.             }  
  49.   
  50.         };  
  51.           
  52.         webview1.getSettings().setJavaScriptEnabled(true);  
  53.         webview1.setWebChromeClient(new WebChromeClient());  
  54.         webview1.addJavascriptInterface(this"JavaObj");  
  55.         webview1.loadUrl("http://192.168.0.22/test.html");  
  56.     }  
  57.       
  58.     public void btn1Click() {     
  59.         Message msg = new Message();  
  60.         msg.obj = "";    
  61.         msg.what = 0;  
  62.         handler.sendMessage(msg);    
  63.     }   
  64. }  

这个APK启动后,将在webview里注册一个JavaObj对象,注册完毕后,自动打开 test.html 这个网页。


在 test.html 这个页面里,按钮调用 btnTS_onclick()这个函数,就可以调用APK里的btn1Click().

 function btnTS_onclick()

{

var obj = window.JavaObj;

obj.btn1Click();

}

 

五、效果截图如下:

 

 

 

六、注意事项

       通过JavaScript调用APK里面的GUI控件时,要首先绑定一个事件代码,然后JS通过这个注册对象的事件代码间接调用


转自:http://blog.csdn.net/ex_net/article/details/8829348

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值