您的位置:首页 > 移动开发

JCFXBL与WebView整合打造安卓应用服务平台

2013-04-20 22:45 483 查看

JCFXBL与WebView整合打造安卓应用服务平台

 本系列文章由ex_net(张建波)编写,转载请注明出处。http://blog.csdn.net/ex_net/article/details/8829348作者:张建波 邮箱: 281451020@qq.com 电话:13577062679 欢迎来电交流!
 
一、应用背景介绍
        最近由于要开发一个运行在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关键代码如下webview1.getSettings().setJavaScriptEnabled(true);
webview1.setWebChromeClient(new WebChromeClient());
webview1.addJavascriptInterface(this, "JavaObj"); (2)JavaScript调用APK里的Java函数关键代码function btnTS_onclick(){
var obj = window.JavaObj;
obj.btn1Click();
}
程序效果说明:
    通过在网页里添加一个Button按钮,当用户点击这个按钮时,他会调用APK本身的一个Button按钮的事件。
完整的APK代码如下:package a.b;

import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.view.View;
import android.view.Window;
import android.view.WindowManager;
import android.view.View.OnClickListener;
import android.webkit.WebChromeClient;
import android.webkit.WebView;
import android.widget.Button;
import android.widget.Toast;

public class WebtestActivity extends Activity {
/** Called when the activity is first created. */
WebView webview1;
Button button1;
Handler handler;

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
setContentView(R.layout.main);
webview1 = (WebView) findViewById(R.id.webView1);
button1 = (Button) findViewById(R.id.button1);
button1.setOnClickListener(new OnClickListener() {

public void onClick(View v) {
Toast.makeText(getApplicationContext(), "button1 is click",
Toast.LENGTH_SHORT).show();
}
});

handler = new Handler() {

public void handleMessage(Message msg) {
switch (msg.what) {
case 0:{
button1.performClick();
break;
}
}
}

};

webview1.getSettings().setJavaScriptEnabled(true);
webview1.setWebChromeClient(new WebChromeClient());
webview1.addJavascriptInterface(this, "JavaObj");
webview1.loadUrl("http://192.168.0.22/test.html");
}

public void btn1Click() {
Message msg = new Message();
msg.obj = "";
msg.what = 0;
handler.sendMessage(msg);
}
}
这个APK启动后,将在webview里注册一个JavaObj对象,注册完毕后,自动打开 test.html 这个网页。

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

 function btnTS_onclick()
{
var obj = window.JavaObj;
obj.btn1Click();
}
 
五、效果截图如下:
 
 
 
六、注意事项
       通过JavaScript调用APK里面的GUI控件时,要首先绑定一个事件代码,然后JS通过这个注册对象的事件代码间接调用
 
 
更多案例敬请期待...
 
(1)获取系统信息例子
(2)UDP案例
(3)TCP案例
(4)JCFXBL调用接口案例
 
推荐阅读:
X86环境下的Andoird 模拟器安装配置  
    使用VirtualBox安装Android 4.2.2 x86   http://blog.csdn.net/kunoy/article/details/8768205
    关于Android x86的启动参数设置相关探讨    http://blog.csdn.net/kunoy/article/details/8783602
 
 

 

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: