序
最近我同事接了一个项目,就是需要传一个图片给游戏的 webview,考虑到服务端传输又没有账号登陆的原因,所以还是本地的好(喂喂喂!本来就该本地传输啊!!)
所以这里写了一个简单的 demo 来完成上述代码。
首先这个问题抽象一下,简单得讲就是需要让 android webview 能够响应 js 代码,并接受 js 的传参数,那这很简单,我们写个 demo 吧。
安卓端设置
添加网络权限
这里首先要创建一个空项目,这个很简单,跟着 IDE 点就行,随后在 gradle 安装完依赖以后,找到文件 src/main/AndroidManifest.xml
, 并修改为如下代码(主要添加了):
<uses-permission android:name="android.permission.INTERNET" />
这个代码申请了网络权限
注意 如果你和我一样是本地测试那么 usesCleartextTraffic 这条是可以开启的,如果是线上环境请尽可能的去掉,https 更为安全。
添加 webview
在可视化界面中添加 webview 并设置 id,文件路径为 layout/activity_main.xml
:
添加 webview 相关的交互代码
随后前往你所设置的软件目录添加后续的交互代码src/main/java/com/example/test_app/MainActivity.kt
这边我用的是 kotlin 如果是 java 路径是类似的
随后查询 webview 并注入代码:
这边就写一下 kt 代码,java 的不多赘述了
⚠ 如果SDK(targetSdkVersion) 设置为 17 或更高,则必须为注入的对象的方法添加 @JavascriptInterface 注释并 设置为 public。如果未提供注释,那么在 Android 4.2 以上将无法正确访问。️
html 代码
随后我们需要本地起一个服务来显示 http ,这里就用 vscode 的插件好了(简单快捷一点,反正只是演示)
把如下代码放置入任意文件夹,并使用 vscode 开启监控:
随后你就可以开始测试了,随便试一下,嗯传指什么的是没问题的了!