1. 程式人生 > >Webview與js互動

Webview與js互動


public class MainActivity extends AppCompatActivity implements View.OnClickListener {

    private EditText ed;
    private Button btn;
    private ProgressBar progress;
    private WebView webview;
    private Button js;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        initView();
    }

    private void initView() {
        ed = (EditText) findViewById(R.id.ed);
        btn = (Button) findViewById(R.id.btn);
        progress = (ProgressBar) findViewById(R.id.progress);
        webview = (WebView) findViewById(R.id.webview);
        js = (Button) findViewById(R.id.js);

        btn.setOnClickListener(this);
        js.setOnClickListener(this);

        WebSettings settings = webview.getSettings();
        settings.setJavaScriptEnabled(true);


        // Android端定義一個方法,給js呼叫,
        // 使用webView物件,呼叫addJavascriptInterface方法(),
        // 第一個引數是寫一個類,在這裡面提供要暴露的方法,方法前最好加一個註解:@JavascriptInterface,
        // 第二個引數是標識字串,js通過這個標識,呼叫我們的方法.    在js裡面是這樣使用的:Android.showToast(content);
        webview.addJavascriptInterface(new Object() {
            @JavascriptInterface
            public void showToast(String content) {
                Toast.makeText(getApplicationContext(), "哇塞!!!!", Toast.LENGTH_LONG).show();
            }
        }, "Android");
    }

    @Override
    public void onClick(View v) {
        switch (v.getId()) {
            case R.id.btn:
                //載入js頁面
                webview.loadUrl("http://172.17.8.100/images/small/default/test.html\n");

                break;
            case R.id.js:
                 //呼叫html中的js方法   格式固定:webView物件.loadUrl("javascript:js方法名(引數)");
                webview.loadUrl("javascript:changeInputValue('哈哈哈哈哈哈')");

                break;
        }
    }


}