- 放html的文件夹assets
- HTML1
- HTML2
5. activity
package koashi.bw.com.jsjiaohu;
import android.annotation.SuppressLint;
import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.webkit.JavascriptInterface;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.widget.Toast;
public class MainActivity extends AppCompatActivity {
private WebView webView;
@SuppressLint("JavascriptInterface")
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
webView = findViewById(R.id.one_web);
//Android调用Js的方法
WebSettings settings = webView.getSettings();
//设置支持Js
settings.setJavaScriptEnabled(true);
//交互协议
webView.addJavascriptInterface(this, "android");
//地址
webView.loadUrl("file:///android_asset/info.html");
//交互 Android调用JS的方法
webView.setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
//Android调用JS的方法
//这里的方法就是JS里的方法
webView.loadUrl("javascript:test1()");
return false;
}
});
}
//js调用Android的方法必须加 @JavascriptInterface
//方法名必须与HTML里的一样
@JavascriptInterface
public void jump() {
Toast.makeText(MainActivity.this, "js调用adnroid方法", Toast.LENGTH_SHORT).show();
Intent intent = new Intent(this, Main2Activity.class);
startActivity(intent);
}
//页面销毁的时候销毁webView
@Override
protected void onDestroy() {
super.onDestroy();
webView.destroy();
}
}
- activity2
package koashi.bw.com.jsjiaohu;
import android.annotation.SuppressLint;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
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.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.Toast;
public class Main2Activity extends AppCompatActivity {
private WebView webView;
@SuppressLint("JavascriptInterface")
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main2);
webView = findViewById(R.id.two_web);
//设置支持JS
WebSettings settings = webView.getSettings();
//设置支持交互
settings.setJavaScriptEnabled(true);
//支持Android与JS交互
webView.addJavascriptInterface(this, "android");
//加载页面
webView.loadUrl("file:///android_asset/infos.html");
//设置支持alert弹框
webView.setWebChromeClient(new WebChromeClient() {
//获取网页标题的方法
@Override
public void onReceivedTitle(WebView view, String title) {
super.onReceivedTitle(view, title);
}
//设置支持alert的方法
@Override
public boolean onJsAlert(WebView view, String url, String message, JsResult result) {
//false弹出 true和super不弹
return false;
}
//
@Override
public boolean onJsPrompt(WebView view, String url, String message, String defaultValue, JsPromptResult result) {
return super.onJsPrompt(view, url, message, defaultValue, result);
}
/**处理定位的相关,否则WebView不会开启定位功能,类似百度地图这样的就没法定位*/
@Override
public void onGeolocationPermissionsShowPrompt(String origin, GeolocationPermissions.Callback callback) {
super.onGeolocationPermissionsShowPrompt(origin, callback);
}
});
//拦截浏览器加载页面,让webview加载
webView.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) {
view.loadUrl("url");
return true;
}
});
}
//js调用andorid方法 并传值
@JavascriptInterface
public void showUserInfo(String name, String pwd) {
Toast.makeText(this, name + "," + pwd, Toast.LENGTH_LONG).show();
}
}