首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > JavaScript >

兑现android与javascript相互调用

2012-09-15 
实现android与javascript相互调用本文出自:http://androidkaifa.com/thread-247-1-1.html欢迎转载,转载请

实现android与javascript相互调用
本文出自:http://androidkaifa.com/thread-247-1-1.html

欢迎转载,转载请注明出自:www.androidkaifa.com
下面www.androidkaifa.com为大家分享一个实现android与javascript相互调用的项目,下面笔者为大家概况几个知识要点:
1.用WebView来显示HTML代码2.允许WebView执行JavaScript   webView.getSettings().setJavaScriptEnabled(true);3.获取到HTML文件,也可从网络中获取webView.loadUrl("file:///android_asset/index.html");   //HTML文件存放在assets文件夹中(3):它是一个非常好的方法,但同时也存在安全危险,因为当HTML中的WebView存在完全隐患时,攻击者可以通过HTML页面向你的应用注入病毒,除非这个HTML文件是完全你你个人写的,排除存在完全隐患了,所以www.androidkaifa.com推荐大家不要轻易从网络或是其它地方在你的项目中通过activity加载来一个javasrcipt文件,代码:2:首先我们要在配置文件加入<uses-permission android:name="android.permission.INTERNET"/>权限2:在项目的asset文件夹下面创建一个www文件,并将你的html文件存放在这文件下面,main.xml布局文件中则包含textview和webview控件,main.xml:<?xml version="1.0"encoding="utf-8"?><LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"   android:layout_width="fill_parent"   android:layout_height="fill_parent"   android兑现android与javascript相互调用rientation="vertical" >    <WebView        android:id="@+id/webView1"       android:layout_width="match_parent"       android:layout_height="match_parent"       android:layout_weight="1" />
   <LinearLayout             android:layout_width="fill_parent"            android:layout_height="fill_parent"             android兑现android与javascript相互调用rientation="vertical"             android:layout_weight="1">    <TextView
       android:id="@+id/textView1"       android:layout_width="wrap_content"       android:layout_height="match_parent"              android:textAppearance="?android:attr/textAppearanceLarge"/>  </LinearLayout></LinearLayout>3: JavaScriptInterfaceDemoActivity.java内容public class JavaScriptInterfaceDemoActivity extendsActivity {         privateWebView Wv;         privateTextView myTextView;                finalHandler myHandler = new Handler();

    /** Calledwhen the activity is first created. */    @Override    public voidonCreate(Bundle savedInstanceState) {       super.onCreate(savedInstanceState);
       setContentView(R.layout.main);        Wv =(WebView)findViewById(R.id.webView1);       myTextView = (TextView)findViewById(R.id.textView1);                finalJavaScriptInterface myJavaScriptInterface         = new JavaScriptInterface(this);    //创建一个JavaScriptInterface对象         
       Wv.getSettings().setLightTouchEnabled(true);       Wv.getSettings().setJavaScriptEnabled(true);// 设置JavaScript启用。// 添加一个对象, 让JS可以访问该对象的方法, 该对象中可以调用JS中的方法       Wv.addJavascriptInterface(myJavaScriptInterface,"AndroidFunction");       Wv.loadUrl("file:///android_asset/www/index.html"); //加载HTML文件    }
    public classJavaScriptInterface {                 ContextmContext;
             JavaScriptInterface(Context c) {                 mContext = c;             }
             public void showToast(String webMessage){                                 finalString msgeToast = webMessage;                                    myHandler.post(new Runnable() {                      @Override                      public void run() {                          // 执行UI线程                          myTextView.setText(msgeToast);                      }                  });
                Toast.makeText(mContext, webMessage,Toast.LENGTH_SHORT).show();             }    }}在这个类的onCreate方法中先是通过ID绑定了webview 和textview两个控件,然后是创建了一个JavaScriptInterface内部类,内部类有一个构造方法,用于初始化context,而在showToast方法中则是通过Handler运行一个用户线程来更新UI,4:index.html文件:<!DOCTYPE ><htmlxmlns="http://www.w3.org/1999/xhtml" debug="true">    <head>        <metahttp-equiv="Content-Type" content="text/html;charset=utf-8" />        <meta name="viewport"content="width=device-width, initial-scale=1.0, maximum-scale=1.0,user-scalable=0">        <metaname="apple-mobile-web-app-capable" content="yes">        <metaname="viewport" content="target-densitydpi=device-dpi"/>        <scripttype="text/javascript">          function init()           {            vartestVal = document.getElementById('mytextId').value;            AndroidFunction.showToast(testVal);           }       </script>   </head>   <body>                <divstyle="float: left;width: 50%;">          <input type="text" style="width: 180px;"name="myText" id="mytextId" />
       </div>        <divstyle="clear: both;height: 3px;"> </div>       <div>         <input value="submit" type="button"name="submit" id="btnSubmit"onclick="javascript:return init();" />       </div>  
   </body>
</html>

热点排行
Bad Request.