Webview與js互動
阿新 • • 發佈:2018-12-20
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; } } }