日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

js 引用 java常量_java调用JS 与JS 调java

發布時間:2023/12/19 javascript 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 js 引用 java常量_java调用JS 与JS 调java 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

這個 剛開始 我也不會,把我整的是個蛋疼的啊,

最后發現其實挺簡單的,我現在給大家說的是我自己掌握的一種,

1. 先是要給項目配置一些權限

(1)、訪問網絡權限

(2)、訪問SD卡權限

2.給webview 配置

webView.setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY);

webView.getSettings().setBuiltInZoomControls(true);

webView.getSettings().setJavaScriptEnabled(true);

3.這個就是webview想JS 暴露一個 可以調用的對象(用來JS調用JAVA方法和JAVA調用JS又返回值的方法時用,如果非上面的兩種情況時,則可以忽略此步。)

webView.addJavascriptInterface(new JsToJava(), "android"); //JsToJava是內部類,代碼在后面。android 是接口名字。

上面的是準備工作

下面的就是要調用的代碼了

java調用JS 方法(無返回值)

webView.loadUrl("javascript:getStsmA()");//調用 JS 中的方法

沒錯,你沒有看錯,就是這么簡單,在加載完HTML頁面后,執行這段代碼,就可以調用JS 中的方法了

JS調用java

webView.addJavascriptInterface(new JsToJava(), "android"); //JsToJava是內部類,代碼在后面。android 是接口名字。

webView.loadUrl("javascript:getStsmA()");//調用JS中的方法

private class JsToJava {

@JavascriptInterface

public void getStsm(String paramFromJS) {//java暴露的方法,用于 JS 調用

Log.e(TAG, "js返回結果===" + paramFromJS);//處理返回的結果

}

}

我在貼出來JS 代碼

大家要注意了最后一段代碼

window.android.getStsm(rtn) ;

這段代碼的意思是JS調用JAVA中的方法

android:java中想JS 中暴露的對象名

getStsm:用Java中暴露的對象名。方法名(就是調用java中的getStsm()這個方法)

這樣JS 就可以通過java這邊暴露的對象名和方法名調用

大家要輸還是不理解的話,就看看 這張圖吧!!!

好了 給大家上代碼 吧

import android.annotation.SuppressLint;

import android.os.Bundle;

import android.support.v7.app.AppCompatActivity;

import android.util.Log;

import android.view.View;

import android.webkit.JavascriptInterface;

import android.webkit.WebView;

import android.widget.Button;

public class MainActivity extends AppCompatActivity {

private WebView webView;

private static final String TAG = "MainActivity";

private Button but;

@SuppressLint("JavascriptInterface")

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

webView = (WebView) this.findViewById(R.id.webView_viewTable);

but = (Button) this.findViewById(R.id.but);

/**

*在Android中要 用java調用 JS 很簡單 直接

*webView.loadUrl("javascript:getfsA()");//調用 JS 中的方法

*這個就是調用無返回值的 方式,直接一句話 (當然 對webview 還有一些 配置,在這里 先 不說了)

* 傳參數給webview 的話 ,就是在

* webView.loadUrl("javascript:getfsA('參數')");//調用 JS 中的方法

* 就是上面的方法

* 這樣 我們的 java 調用 JS 的無返回值 方法 ,就完了

*

* 要調用又返回值的話,我們這邊不是接收者,而是我們調用JS 中的方法,

* 讓此方法調用 本地的 一個java方法,然后 傳值過來,這樣 我們就接收到值了

* */

//這幾行代碼是對webview的授權,不能少

webView.setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY);

webView.getSettings().setBuiltInZoomControls(true);

webView.getSettings().setJavaScriptEnabled(true);

webView.addJavascriptInterface(new JsToJava(), "android"); //JsToJava是內部類,代碼在后面。android 是接口名字。

/** 這里的 第二個參數 就是 JS 回調 java的 一個方法名大家注意看下html文件中 調用的方法的返回

window.android.getfs(rtn);//JS 中 的代碼,這句代碼的意思是,通過android這個java暴露的借口,調用getfs()這個方法

*

**/

webView.loadUrl("file:///storage/emulated/0/1.html");//這句是載入一個html頁面。

but.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View v) {

webView.loadUrl("javascript:getfsA()");//調用 JS 中的方法

}

});

}

private class JsToJava {

@JavascriptInterface

public void getfs(String paramFromJS) {//Android暴露的方法,用于 JS 調用

//這個方法就是JS 調用java方法 ,傳回 返回值,這樣我們就接收到JS 返回給我們的值了

Log.e(TAG, "js返回結果===" + paramFromJS);//處理返回的結果

}

}

}

下面的是html 代碼

function ?getStsmA() {

var rtn = ?getStsm();

window.android.getStsm(rtn) ; }

總結

以上是生活随笔為你收集整理的js 引用 java常量_java调用JS 与JS 调java的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。