JS交互

  1. 放html的文件夹assets
    在这里插入图片描述
    在这里插入图片描述
  2. HTML1
  3. 在这里插入图片描述
    在这里插入图片描述
  4. 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();
    }

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值