栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Android (Arctic Fox P2) Kotlin WebView.addJavascriptInterface

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Android (Arctic Fox P2) Kotlin WebView.addJavascriptInterface

1. 自定义需要注入Webiew的JavascriptObject:

// 继承Object基类
class JavascriptObject: Object(){

    public fun doBefore(arg: Any?){
    }

    // 注解1
    @JavascriptInterface
    public fun do(arg: String?){
    }
}

2. 往Webiew注入Javascript Interface类:

// 注解2
@SuppressLint("JavascriptInterface")
private fun addJavascriptInterfaceObject(){
    val object1 = JavascriptObject()
    // 自定义参数: arg
    lateinit var arg: Any? 
    object1.doBefore(arg)
    // 自定义调用的Javascript Interface类JavascriptObject的别名——在Javascript调用中使用的名称
    webView.addJavascriptInterface(object1, "jsio")
}

3. 在Javascript中调用Javascript Interface类JavascriptObject方法do(arg: String?):

// 自定义传入参数arg
lateinit var arg: String?
var html: String = """Test

"""
html += """

"""

 如果不需要混淆该类可以在build.gradle (:app)文件定义的规则文件

proguard-rules.pro或
proguard-android-optimize.txt

中进行注释。

gradle.build (:app):

android {
    compileSdkVersion 30
    buildToolsVersion "31.0.0"
    defaultConfig {
        applicationId "com.mr.n.x"
        minSdkVersion 21
        targetSdkVersion 30
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        release {
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }
}

 proguard-rules.pro:

-keep class androidx.annotation.Keep

给之前自定义的Javascript Interface类JavascriptObject标注@Keep:

@Keep
class JavascriptObject: Object() {
    // ...
}

注解1:

@JavascriptInterface需要标注在Javascript调用的方法定义前。

注解2:

@SuppressLint("JavascriptInterface")需要添加在调用WebView.addJavascriptInterface方法的方法前。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/713562.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号