在xml里写webView控件
<WebView
android:id="@+id/webview"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="#000" />
在第一个mainActivity中
//----------------- --------------------------oncreatview方法中------------------------------------------------------
//adnroid调用js方法
WebSettings webSettings = webView.getSettings();
//设置支持js
webSettings .setJavaScriptEnabled(true);
// webView.loadUrl("file:///android_asset/info.html");
webView.loadUrl("file:///android_asset/info.html");
// webView.loadUrl("https://www.baidu.com/baidu?tn=monline_3_dg&ie=utf-8&wd=selenium+jar+2.4");
//交互 adnroid调用js方法 //长按事件
webView.setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
//adnroid调用js方法
webView.loadUrl("javascript:test1()");//可以传参数
// webView.evaluateJavascript();//Android 4.4
// webView.loadUrl("javascript:(document.getElementsByTagName('img')[0].src='http://p4.so.qhmsg.com/bdr/326__/t0168082f62f4b041de.jpg'; )");
return false;
}
});
//1,js调用安卓 协议
webView.addJavascriptInterface(this, "android");
//------------------------------------------------oncreatview方法外-------------------------------------------------------------
//js调用安卓方法需要添加注解
@JavascriptInterface
public void jump() {//传参
Toast.makeText(getActivity(), "js调用adnroid方法", Toast.LENGTH_SHORT).show();
Intent intent =new Intent(getActivity(),Main2Activity.class);
startActivity(intent);
}
//页面销毁的时候销毁webView
@Override
public void onDestroy() {
super.onDestroy();
webView.destroy();
}
在第二个MainAcyivity中 布局里面控件都是和第一个布局一样
package com.example.zhousan;
import android.annotation.SuppressLint;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.webkit.GeolocationPermissions;
import android.webkit.JavascriptInterface;
import android.webkit.JsPromptResult;
import android.webkit.JsResult;
import android.webkit.WebChromeClient;
import android.webkit.WebResourceRequest;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.Toast;
public class Main2Activity extends AppCompatActivity {
@SuppressLint("JavascriptInterface")
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main2);
final WebView webview = (WebView) findViewById(R.id.webview);
//设置webview支持js交互
webview.getSettings().setJavaScriptEnabled(true);
//加载页面
webview.loadUrl("file:///android_asset/infos.html");
//设置弹出Alert
webview.setWebChromeClient(new WebChromeClient(){
//title就是网页标题
@Override
public void onReceivedTitle(WebView view, String title) {//此方法可获得网页标题
Log.i("xxx",view.getTitle());
super.onReceivedTitle(view, title);
}
@Override
public boolean onJsAlert(WebView view, String url, String message,
JsResult result) {
// TODO Auto-generated method stub
//false弹出 true和super不弹
return false;
}
@Override
public boolean onJsPrompt(WebView view, String url, String message,
String defaultValue, JsPromptResult result) {
// TODO Auto-generated method stub
return super.onJsPrompt(view, url, message, defaultValue, result);
}
/**处理定位的相关,否则WebView不会开启定位功能,类似百度地图这样的就没法定位*/
@Override
public void onGeolocationPermissionsShowPrompt(String origin, GeolocationPermissions.Callback callback) {
callback.invoke(origin, true, false); //这个必须有
super.onGeolocationPermissionsShowPrompt(origin, callback);
}
});
webview.setWebViewClient(new WebViewClient(){
//拦截浏览器加载页面,让WebView加载页面
@Override
public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) {
view.loadUrl("url");
return true;
}
});
//js调用andorid方法
webview.addJavascriptInterface(this, "android");
}
//js调用andorid方法 并传值
@JavascriptInterface
public void showUserInfo(String name,String pwd){
Toast.makeText(this, name+","+pwd, Toast.LENGTH_LONG).show();
/*Intent intent =new Intent(this,Main3Activity.class);
startActivity(intent);*/
}
}
第三个MainActivity中
package com.example.zhousan;
import android.annotation.SuppressLint;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.webkit.JavascriptInterface;
import android.webkit.WebChromeClient;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.Toast;
public class Main3Activity extends AppCompatActivity {
@SuppressLint("JavascriptInterface")
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main3);
//找控件
final WebView webview =(WebView) findViewById(R.id.webview);
//得到WebSettings
WebSettings webSettings = webview.getSettings();
//加载页面之前设置支持js交互
webSettings.setJavaScriptEnabled(true);
//第一种加载本地html页面
webview.loadUrl("file:///android_asset/newsinfo.html");
//第二种加载网页 有网 加联网权限
// webview.loadUrl("https://www.baidu.com");
// webview.loadUrl("http://172.16.10.119:8080/bwie/mhIndex.do?m=index");
//第三种加载html字符串
/*String html = "<html><head><title>TextView使用HTML</title></head><body><p><strong>强调</strong></p><p><em>斜体</em></p>"
+ "<p><a href=\"http://www.dreamdu.com/xhtml/\">超链接HTML入门</a>学习HTML!</p><p><font color=\"#aabb00\">颜色1"
+ "</p><p><font color=\"#00bbaa\">颜色2</p><h1>标题1</h1><h3>标题2</h3><h6>标题3</h6><p>大于>小于<</p><p>" +
"下面是网络图片</p><img src=\"http://avatar.csdn.net/0/3/8/2_zhang957411207.jpg\"/></body></html>";
webview.loadData(html, "text/html", "gbk");*/
/**
* android调js方法
*
*/
webview.setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
// TODO Auto-generated method stub
webview.loadUrl("javascript:test1()");
return false;
}
});
/**
* js调android方法
* 第一步设置支持js调用android方法
*
*/
webview.addJavascriptInterface(this, "android");
webview.setWebViewClient(new WebViewClient(){
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
// TODO Auto-generated method stub
//不使用系统浏览器 使用WebView内置浏览器
view.loadUrl(url);
return true;
}
});
webview.setWebChromeClient(new WebChromeClient(){
//获取网页加载进度
@Override
public void onProgressChanged(WebView view, int newProgress) {
// TODO Auto-generated method stub
super.onProgressChanged(view, newProgress);
}
});
}
//定义一个android方法
@JavascriptInterface
public void toastMessage(){
Toast.makeText(this, "js调用android方法了", Toast.LENGTH_LONG).show();
}
}