android——WebView交互

来源:互联网 发布:广东听说考试软件 编辑:程序博客网 时间:2024/06/06 14:13

<uses-permission android:name="android.permission.INTERNET"/>
<activity android:name=".BaiduActivity"></activity>

/——java/js交互——/

public class MainActivity extends AppCompatActivity implements View.OnClickListener {    private WebView mW;    String url = "file:///android_asset/a.html";    /**     * 调用js代码     */    private Button mBt;    private Button mBt2;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        initView();    }    @SuppressLint("JavascriptInterface")    private void initView() {        mW = (WebView) findViewById(R.id.w);        WebSettings settings = mW.getSettings();        //设置是否支持js交互        settings.setJavaScriptEnabled(true);        //第二个参数也是js给的        mW.addJavascriptInterface(this, "hello");        //加载一个网页,这个网页加载的是assets目录里的a.html        mW.loadUrl(url);        mBt = (Button) findViewById(R.id.bt);        mBt.setOnClickListener(this);        mBt2 = (Button) findViewById(R.id.bt2);        mBt2.setOnClickListener(new OnClickListener() {            @Override            public void onClick(View view) {                Intent intent=new Intent(MainActivity.this,BaiduActivity.class);                startActivity(intent);            }        });    }    /**     * 方法的名字是js给的     */    @JavascriptInterface    public void showAndroid() {        Log.e("MainActivity", "showAndroid");        Toast.makeText(MainActivity.this, "js 调用Android 代码了", Toast.LENGTH_SHORT).show();    }    @Override    public void onClick(View v) {        switch (v.getId()) {            default:                break;            case R.id.bt:                mW.loadUrl("javascript:show('我是android传过来的代码')");                break;        }    }}
/——跳转到百度页面——/

public class BaiduActivity extends Activity {    private WebView mwebview;    @Override    public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_baidu);        mwebview = (WebView) findViewById(R.id.id_webview);        mwebview.getSettings().setJavaScriptEnabled(true);      //设置WebView属性,能够执行Javascript脚本        mwebview.loadUrl("http://www.baidu.com/");                  //加载需要显示的网页        mwebview.setWebViewClient(new HelloWebViewClient ());       //设置Web视图    }    @Override    //设置回退    //覆盖Activity类的onKeyDown(int keyCoder,KeyEvent event)方法    public boolean onKeyDown(int keyCode, KeyEvent event) {        if ((keyCode == KeyEvent.KEYCODE_BACK) && mwebview.canGoBack()) {            mwebview.goBack(); //调用goBack()返回WebView的上一页面            return true;        }        return false;    }    //Web视图    private class HelloWebViewClient extends WebViewClient {        @Override        public boolean shouldOverrideUrlLoading(WebView view, String url) {            view.loadUrl(url);            return true;        }    }}

/——XML文件——/
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:app="http://schemas.android.com/apk/res-auto"    xmlns:tools="http://schemas.android.com/tools"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:orientation="vertical"    >    <Button        android:id="@+id/bt"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:text="调用js代码" />    <Button        android:id="@+id/bt2"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:text="跳转百度页面" />    <WebView        android:id="@+id/w"        android:layout_width="match_parent"        android:layout_height="match_parent" /></LinearLayout>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="fill_parent"    android:layout_height="fill_parent"    android:orientation="vertical" >    <WebView        android:id="@+id/id_webview"        android:layout_width="fill_parent"        android:layout_height="fill_parent"/></LinearLayout>

原创粉丝点击