標籤:
效果如:
主要用到一個介面類:MyObject
package com.example.jsdemo;import android.content.Context;import android.support.v7.app.AlertDialog;import android.webkit.JavascriptInterface;import android.widget.Toast;public class MyObject { private Context context; public MyObject(Context context) { this.context = context; } //將顯示Toast和對話方塊的方法暴露給JS指令碼調用 @JavascriptInterface public void showToast(String name) { Toast.makeText(context, name+"我是後台追加的", Toast.LENGTH_SHORT).show(); } @JavascriptInterface public void showDialog() { new AlertDialog.Builder(context) .setTitle("標題") .setMessage("我是Java不帶參").create().show(); }}View Code
MainActivity實現如:
package com.example.jsdemo;import android.os.Bundle;import android.support.v7.app.AppCompatActivity;import android.webkit.WebSettings;import android.webkit.WebView;public class MainActivity extends AppCompatActivity { private WebView wView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); wView = (WebView) findViewById(R.id.wView); wView.loadUrl("file:///android_asset/demo1.html"); WebSettings webSettings = wView.getSettings(); //①設定WebView允許調用js webSettings.setJavaScriptEnabled(true); webSettings.setDefaultTextEncodingName("UTF-8"); //②將object對象暴露給Js,調用addjavascriptInterface wView.addJavascriptInterface(new MyObject(MainActivity.this), "myObj"); }}View Code
然後是main的布局:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="fill_parent" android:layout_height="fill_parent" tools:context=".MainActivity" > <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerHorizontal="true" android:layout_centerVertical="true" android:text="hello_world" android:id="@+id/textView" /> <WebView android:id="@+id/wView" android:layout_width="match_parent" android:layout_height="match_parent" android:padding="5dp" /></RelativeLayout>
View Code
最後是html檔案:
<html><head> <title>Js調用Android</title></head><body><input type="button" value="JS調用Java(帶參)" onclick="myObj.showToast(‘我是Js參數~‘);"/><input type="button" value="JS調用Java(不帶參)" onclick="myObj.showDialog();"/></body></html>
View Code
原始碼下載
Android 使用js調用Java