Android 使用VebView中的JavaScript調用Android方法

Android 使用VebView中的JavaScript調用Android方法

這裡寫圖片描述

MyObject 暴露給JS調用的類

package shortcut.song.com.myapplication;

import android.app.AlertDialog;
import android.content.Context;
import android.webkit.JavascriptInterface;
import android.widget.Toast;


/**
 * Created by Administrator on 2017/8/24 0024.
 */

public class MyObject {

    Context mContext;
    MyObject(Context context) {
        mContext = context;
    }

    // 該方法將會暴露給JavaScript腳本調用
    @JavascriptInterface
    public void showToast(String name) {
        Toast.makeText(mContext, name + " Hello", Toast.LENGTH_SHORT).show();
    }

    @JavascriptInterface
    public void showList() {
        // 顯示一個普通列表對話框
        new AlertDialog.Builder(mContext)
                .setTitle("List name")
                .setIcon(android.R.drawable.alert_dark_frame)
                .setItems(new String[] {"Android", "Java", "C++", "Python"}, null)
                .setPositiveButton("OK", null)
                .create()
                .show();
    }

}

加載的html文件 assets目錄下, mWebView.loadUrl(“file:///android_asset/test.html”);



1 2

Layout佈局文件



    

主界面Activity:

package shortcut.song.com.myapplication;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.webkit.WebSettings;
import android.webkit.WebView;

public class JsCallAndroidActivity extends AppCompatActivity {
    WebView mWebView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_js_call_android);
        mWebView = (WebView)findViewById(R.id.web_jscall_android);

        // 此處加載的是asset目錄下的html文件,如有需要也可以使用http協議來加載遠程網絡的HTML頁面
        mWebView.loadUrl("file:///android_asset/test.html");

        // 獲取WebView的設置對象
        WebSettings webSettings = mWebView.getSettings();

        // 開啟JavaScript調用
        webSettings.setJavaScriptEnabled(true);

        // 將MyObject對象暴露給JavaScript腳本
        // 這樣test.html頁面中的JavaScript可以通過myObj來調用MyObject的方法
        mWebView.addJavascriptInterface(new MyObject(this), "myObj");

    }
}

運行效果:

這裡寫圖片描述

這裡寫圖片描述

You May Also Like