android中引用javascript和在javascript中引用java的简单例子_移动开发_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > 移动开发 > android中引用javascript和在javascript中引用java的简单例子

android中引用javascript和在javascript中引用java的简单例子

 2014/12/9 17:35:24  YWNWA  程序员俱乐部  我要评论(0)
  • 摘要:android中引用javascript和在javascript中引用java的简单例子在android中通过微webView是可以加载javascript代码的,与其说是javascript不如说是加载网页,其实就是html和javascript的结合等,通过html和javascript也可以创建安卓应用,因为android和javascript可以相互调用,下面是我介绍的一个简单的例子,大家可以参考。欢迎和大家一起交流。//允许JavaScript执行webSettings
  • 标签:android 例子 Java javascript

                                 android中引用javascript和在javascript中引用java的简单例子

在android中通过微webView是可以加载javascript代码的,与其说是javascript不如说是加载网页,其实就是html和javascript的结合等,通过html和javascript也可以创建安卓应用,因为android和javascript可以相互调用,下面是我介绍的一个简单的例子,大家可以参考。欢迎和大家一起交流。

//允许JavaScript执行
webSettings.setJavaScriptEnabled(true);

// 添加一个对象, 让javascript可以访问该对象的方法,
myWebView.addJavascriptInterface(new WebAppInterface(this),
"myInterfaceName");

//java中调用javascript中的方法
myWebView.loadUrl("javascript:myFunction()");

具体的大家看代码分析吧,这个简单的列子其实很容易明白的

package com.mlf.javascripttest;

import android.os.Bundle;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.content.Context;

import android.view.View;
import android.view.View.OnClickListener;
import android.webkit.WebChromeClient;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.webkit.JsResult;
import android.widget.Button;
import android.widget.Toast;

//@SuppressLint("SetJavaScriptEnabled")
@SuppressLint({ "SetJavaScriptEnabled", "JavascriptInterface" })
public class MainActivity extends Activity {
private WebView myWebView;
private Button button;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        myWebView=(WebView) findViewById(R.id.javascriptWebview);
        button=(Button) findViewById(R.id.uttonId);
        WebSettings webSettings=myWebView.getSettings();
        //允许JavaScript执行
        webSettings.setJavaScriptEnabled(true);
        webSettings.setDefaultTextEncodingName("GBK");
         myWebView.setWebViewClient(new WebViewClient());
        
         myWebView.setWebChromeClient(new WebChromeClient()
            {

                @Override
                public boolean onJsAlert(WebView view, String url, String message,
                        JsResult result)
                {
                    // TODO Auto-generated method stub
                    return super.onJsAlert(view, url, message, result);
                }

            });
        // 添加一个对象, 让javascript可以访问该对象的方法,
         myWebView.addJavascriptInterface(new WebAppInterface(this),
                    "myInterfaceName");

            // 载入页面:本地html资源文件,放在assets文件夹下
            myWebView.loadUrl("file:///android_asset/javascripttest.html");
            button.setOnClickListener(new OnClickListener() {
                
                @Override
                public void onClick(View arg0) {
                    // TODO Auto-generated method stub
                    //java中调用javascript中的方法
                    myWebView.loadUrl("javascript:myFunction()");
                }
            });
    }
         
         class WebAppInterface{
            Context mContext;
            WebAppInterface(Context c){
                mContext=c;
            }
            public void showToast(String toast){
                Toast.makeText(mContext, toast, Toast.LENGTH_LONG).show();            }
         }
        
        
}

javascript xml文件

<html>
<head>
<h1>
This is a HTML Page
</h1>
<!-- JavaScript脚本,主要包括了按钮要执行的函数,显示对话框等 -->
<script type="text/javascript">
    //JavaScript方法,弹出对话框显示信息
    function myFunction()
    {
        alert("Hello World!");
    }
    function onAlert()
    {
        console.log("onAlert method");//显示调试信息
        alert("This is a alert sample from html");
    }
    function onConfirm()
    {
        console.log("onConfirm method");
        var b = confirm("are you sure to login?");
        alert("your choice is " + b);
    }
    function onPrompt()
    {
        console.log("onPrompt method");
        var b = prompt("please input your password", "aaa");
        alert("your input is " + b);
    }

    //调用绑定的Java对象的方法,即调用Android代码显示对话框
    function showAndroidToast(toast)
    {
        console.log("showAndroidToast method");
        myInterfaceName.showToast(toast);//注意此处的myInterfaceName要和外部传入的名字一致,大小写正确
    }
</script>
</head>
<body>
    
    <p>
        <!-- 前四个按钮调用JS函数 -->
        JavaScript函数调用 <br />
        <button onclick="myFunction()">点击这里!</button>
        <br /> 
        <input type="button" value="alert" onclick="onAlert()" /> <br />
        <input type="button" value="confirm" onclick="onConfirm()" /> <br />
        <input type="button" value="prompt" onclick="onPrompt()" /><br />
        <!-- 上面用了两种定义按钮的方式,效果一样的 -->
    </p>
    
    <p>
        <!-- 这个Say hello 按钮调用Android代码中的方法 -->
        用JavaScript按钮调用Android代码 <br /> 
        <input type="button"
            value="Say hello" onClick="showAndroidToast('Hello Android!')" />
    </p>

    <a href="http://www.google.com" />Google
    </a>

</body>
</html>

布局文件xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
     >

    <TextView
        android:layout_width="match_parent"
        android:layout_height="30dp"
        android:text="javascript和android相互调用" 
        android:textSize="20dp"
        android:gravity="center"
        android:id="@+id/textView1"/>
    <WebView 
       android:layout_below="@+id/textView1"
       android:id="@+id/javascriptWebview" 
       android:layout_width="match_parent"
       android:layout_height="380dp"/>
    <Button 
        android:id="@+id/uttonId"
        android:layout_below="@+id/javascriptWebview"
        android:layout_width="match_parent"
        android:layout_height="50dp"
        android:textSize="20dp"
        android:gravity="center"
        android:text="android调用javascript"/>

</RelativeLayout>

 

谢谢大家参考借鉴,有机会多多交流!欢迎提出疑问,或有新的领先技术学习!

发表评论
用户名: 匿名