zoukankan      html  css  js  c++  java
  • js与android原生交互

    package com.liuhao.mysecond;

    import androidx.annotation.RequiresApi;
    import androidx.appcompat.app.AppCompatActivity;

    import android.annotation.SuppressLint;
    import android.content.Context;
    import android.content.Intent;
    import android.content.pm.ActivityInfo;
    import android.graphics.Bitmap;
    import android.net.Uri;
    import android.os.Build;
    import android.os.Bundle;

    import android.os.Handler;
    import android.util.Log;
    import android.view.View;
    import android.webkit.JavascriptInterface;
    import android.webkit.ValueCallback;
    import android.webkit.WebResourceRequest;
    import android.webkit.WebView;
    import android.webkit.WebViewClient;
    import android.widget.Toast;

    import com.liuhao.mysecond.WebView.WebViewActivity;


    public class MainActivity extends AppCompatActivity {


    @Override
    protected void onResume() {
    /**
    * 设置为横屏
    */
    // if(getRequestedOrientation()!= ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE){
    // setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
    // }
    super.onResume();
    }


    @SuppressLint("JavascriptInterface")
    @Override
    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    final WebView myWebView = findViewById(R.id.WV_Id);
    myWebView.clearCache(true);

    myWebView.getSettings().setJavaScriptEnabled(true);
    myWebView.getSettings().setJavaScriptCanOpenWindowsAutomatically(true);
    myWebView.getSettings().setDomStorageEnabled(true);
    myWebView.getSettings().setAllowFileAccess(true);
    myWebView.addJavascriptInterface(new JavaScriptinterface(this), "android");
    myWebView.loadUrl("http://10.8.106.67:3000/test.html");
    myWebView.setWebViewClient(new MyWebViewClient());


    }


    @RequiresApi(api = Build.VERSION_CODES.KITKAT)
    public void sendMessage(View view) {
    WebView myWebView = findViewById(R.id.WV_Id);
    myWebView.evaluateJavascript("javascript:AndroidcallJS()", new ValueCallback<String>() {
    @Override
    public void onReceiveValue(String value) {
    //此处为 js 返回的结果
    Log.i("刘浩:", value);
    }
    });
    }
    }

    class JavaScriptinterface {
    Context context;

    public JavaScriptinterface(Context c) {
    context = c;
    }

    /**
    * 与js交互时用到的方法,在js里直接调用的
    */
    @JavascriptInterface
    public void click(String ssss) {

    Toast.makeText(context, ssss, Toast.LENGTH_LONG).show();
    }
    }

    class MyWebViewClient extends WebViewClient {
    @RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
    @Override //WebView代表是当前的WebView
    public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) {
    //表示在当前的WebView继续打开网页
    view.loadUrl(request.getUrl().toString());
    return true;
    }

    @Override
    public void onPageStarted(WebView view, String url, Bitmap favicon) {
    super.onPageStarted(view, url, favicon);

    }

    @Override
    public void onPageFinished(WebView view, String url) {
    super.onPageFinished(view, url);

    }

    }





    <div style="margin-top:200px"></div>
    <span id="liu" onclick="AndroidcallJS()" href="myapp://">打开微信</span>
    <div id="show"></div>
    <button id="btn" onclick="window.android.click('77777777777')">掉原生</button>
    <script>

    function AndroidcallJS(){
    document.getElementById("show").innerHTML="Android调用了JS的AndroidcallJS方法"
     
    return "99999999999999"
    }
    //document.getElementById("liu").click()
    </script>
  • 相关阅读:
    python使用Flask作为MockServer的方法
    Springboot提示数据库连接问题Connection is not available
    python解析FreeMind和XMind思维导图
    java操作对比两个字符串,将差异数据提取出来
    CronExpression表达式详解和案例
    Jquery.Datatables dom表格定位 (转)
    Flask 之 WebSocket
    基于WebSocket的简易聊天室
    Flask 之 宏
    Flask 之 蓝图
  • 原文地址:https://www.cnblogs.com/liuhao-web/p/11550381.html
Copyright © 2011-2022 走看看