最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

JavaScript調用Android接口常見的3種方式

 更新時間:2025年05月28日 10:27:58   作者:遙不可及zzz  
這篇文章主要介紹了JavaScript調用Android接口常見的3種方式,分別是通過addJavascriptInterface注入Java對象、攔截WebChromeClient實現(xiàn)雙向通信、攔截URLScheme支持單向調用,需要的朋友可以參考下

前言

在 Android 開發(fā)中,JavaScript(JS)調用原生 Android 接口主要通過 WebView 組件實現(xiàn)。以下是常見的 3 種核心方式及具體實現(xiàn)邏輯:

1. addJavascriptInterface 注入接口??

??原理??:通過 WebView 向 JS 暴露一個 Java 對象,JS 可直接調用該對象中被 @JavascriptInterface 注解標記的方法

??步驟??:

  • ??定義接口類??:
    public class WebAppInterface {
        Context mContext;
        WebAppInterface(Context c) { mContext = c; }
    
        @JavascriptInterface
        public void showToast(String msg) {
            Toast.makeText(mContext, msg, Toast.LENGTH_SHORT).show();
        }
    }
  • ??注入接口到 WebView??:
    webView.getSettings().setJavaScriptEnabled(true);
    webView.addJavascriptInterface(new WebAppInterface(this), "AndroidBridge");
  • ??JS 調用??:
    window.AndroidBridge.showToast("Hello from JS!");

??注意事項??:

  • ??安全風險??:若未使用 @JavascriptInterface 注解,可能導致任意方法被調用(如系統(tǒng)敏感 API)
  • ??API 版本??:需最低支持 API 17(Android 4.2)

??2. 攔截 WebChromeClient 對話框??

??原理??:通過重寫 WebChromeClient 的對話框回調方法(如 onJsPrompt),解析 JS 發(fā)送的指令

??步驟??:

  • ??自定義 WebChromeClient??:
    webView.setWebChromeClient(new WebChromeClient() {
        @Override
        public boolean onJsPrompt(WebView view, String url, String message, String defaultValue, JsPromptResult result) {
            if (message.startsWith("native:")) { // 協(xié)議約定
                handleNativeCall(message); // 解析并執(zhí)行原生邏輯
                result.confirm("success"); // 返回結果給 JS
                return true;
            }
            return super.onJsPrompt(view, url, message, defaultValue, result);
        }
    });
  • ??JS 調用??:
    prompt("native:showToast", "{'msg':'Hello'}"); // 通過 prompt 發(fā)送指令

??適用場景??:

  • 需要雙向通信(JS 可獲取原生返回值);
  • 兼容低版本 Android(無需依賴 @JavascriptInterface

??3. 攔截 URL Scheme??

??原理??:JS 觸發(fā)特定格式的 URL 請求(如 myapp://action?params),Android 通過 shouldOverrideUrlLoading 攔截并處理

??步驟??:

  • ??自定義 WebViewClient??:
    webView.setWebViewClient(new WebViewClient() {
        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
            if (url.startsWith("myapp://")) { // 協(xié)議約定
                parseUrl(url); // 解析 URL 并執(zhí)行對應邏輯
                return true; // 阻止默認加載
            }
            return super.shouldOverrideUrlLoading(view, url);
        }
    });
  • ??JS 調用??:
    window.location.href = "myapp://showToast?msg=Hello"; // 或通過 iframe 觸發(fā)

??優(yōu)缺點??:

  • ??優(yōu)點??:兼容性最好(支持所有 Android 版本);
  • ??缺點??:僅支持單向調用(JS 無法直接獲取原生返回值)

??安全建議??

  • ??輸入校驗??:對 JS 傳遞的參數(shù)進行嚴格校驗,防止注入攻擊
  • ??最小權限原則??:僅暴露必要的接口方法,避免敏感操作(如文件讀寫)
  • ??HTTPS 加密??:加載遠程頁面時使用 HTTPS,避免中間人攻擊

總結 

到此這篇關于JavaScript調用Android接口常見的3種方式的文章就介紹到這了,更多相關JS調用Android接口內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Android實現(xiàn)透明動畫

    Android實現(xiàn)透明動畫

    這篇文章主要為大家詳細介紹了Android實現(xiàn)透明動畫,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-05-05
  • android之RatingBar控件用法詳解

    android之RatingBar控件用法詳解

    下面小編就為大家?guī)硪黄猘ndroid之RatingBar控件用法詳解。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-09-09
  • Android系列---JSON數(shù)據(jù)解析的實例

    Android系列---JSON數(shù)據(jù)解析的實例

    JSON(JavaScript Object Notation)和XML,并稱為客戶端和服務端交互解決方案的倚天劍和屠龍刀,這篇文章主要介紹了Android系列---JSON數(shù)據(jù)解析的實例,有興趣的可以了解一下。
    2016-11-11
  • Android 多渠道打包進階版

    Android 多渠道打包進階版

    上篇文章更了Android 多渠道打包,這篇文章將做一個后續(xù)繼續(xù)更Android 多渠道打包進階版,上次意未盡的朋友可以繼續(xù)啦,第一次點進來的朋友也可以看上次文章
    2021-09-09
  • Flutter啟動流程的深入解析

    Flutter啟動流程的深入解析

    這篇文章主要給大家介紹了關于Flutter啟動流程的相關資料,文中通過示例代碼介紹的非常詳細,對大家學習或者使用Flutter具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧
    2019-04-04
  • 詳解Flutter如何獲取Text截斷后的字符串

    詳解Flutter如何獲取Text截斷后的字符串

    當Text文本設置maxLins屬性將文本強制截斷之后,Text的承載字符串是截斷前,還是截斷后的呢,我們又該如何獲取截斷后的字符串呢,下面就來和大家詳細講講
    2023-06-06
  • Android切換卡TabWidget用法示例

    Android切換卡TabWidget用法示例

    這篇文章主要介紹了Android切換卡TabWidget用法,結合實例形式分析了TabWidget選項卡界面布局及功能實現(xiàn)的操作技巧,需要的朋友可以參考下
    2016-08-08
  • Android判斷當前應用程序處于前臺還是后臺的兩種方法

    Android判斷當前應用程序處于前臺還是后臺的兩種方法

    這篇文章主要介紹了Android判斷當前應用程序處于前臺還是后臺的兩種方法,有需要的朋友可以參考一下
    2013-12-12
  • Android自定義Animation實現(xiàn)View搖擺效果

    Android自定義Animation實現(xiàn)View搖擺效果

    這篇文章主要為大家詳細介紹了Android自定義Animation實現(xiàn)View搖擺效果,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-01-01
  • 解決Android MediaRecorder錄制視頻過短問題

    解決Android MediaRecorder錄制視頻過短問題

    本文主要介紹Android MediaRecorder,在使用MediaRecorder時經(jīng)常會遇到視頻錄制太短問題,這里提供解決問題的實例代碼以供大家參考
    2016-07-07

最新評論

平定县| 横山县| 乐东| 武陟县| 岚皋县| 涞水县| 平阴县| 新密市| 隆昌县| 康马县| 宜宾市| 沙坪坝区| 搜索| 昌黎县| 龙胜| 吉隆县| 台江县| 汕头市| 光山县| 固始县| 珲春市| 化德县| 和硕县| 鹤山市| 天长市| 拜城县| 墨竹工卡县| 罗江县| 营口市| 申扎县| 奉化市| 临泽县| 都江堰市| 铜陵市| 新晃| 安阳县| 高雄市| 会泽县| 锦州市| 阳东县| 油尖旺区|