百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术分类 > 正文

七爪源码:如何在 Android Webview 中使用 Javascript 注入

ztj100 2024-12-13 17:22 19 浏览 0 评论

在移动应用程序开发中,有一种情况是用户希望将他们的交互式 Web 内容作为原生 Android 或 iOS 应用程序。 为此,开发人员有 2 个选项,他们可以从头开始构建应用程序,这需要额外的时间和资源,或者是将网页作为 web 视图嵌入到原生 android 应用程序中的最简单和更快的选项。 它将减少开发人员开发本机应用程序 UI 并仅使用当前网页中的 UI 的时间。

但是,这种方法存在局限性,例如某些任务或手势只能在移动应用程序中发生,而不能在浏览器中发生,例如语音命令或滑动手势。 为了适应这一点,我们需要在原生应用程序中添加额外的代码,并将这个原生任务连接到我们的 webview 应用程序。 在这种情况下,javascript 注入作为将本机代码(Java 或 Swift)桥接到网页代码(Javascript)的解决方案


Android 中的 Javascript 注入

在这里,我将尝试解释在 Native android 应用程序中加载网页所需完成的基本设置。首先,您需要在活动布局中设置 webview,下面是如何在 Android XML 文件中添加 <Webview> 标记的示例

<WebView
    android:id="@+id/webview"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
/>

之后,我们需要访问互联网才能在我们的应用程序中工作,为此我们应该在 Android 清单文件中添加以下语法

<manifest ... >
    <uses-permission android:name="android.permission.INTERNET" />
    ...
</manifest>

现在,我们可以移动到 MainActivity.java 文件,在这里我们需要在 onCreate() 函数中添加以下语法。因为 onCreate 函数是我们初始化一切的第一个地方,所以下面的语法帮助我们初始化我们的 webview。 setJavaScriptEnabled(true) 语法需要设置为 true,以授予在此使用 javascript 注入的权限。 addJavascriptInterface(this,"android") 语法将有助于创建可用作 Java 和 Javascript 之间的桥梁的 Web 界面。在这里,我们的界面将被称为android。最后一个语法是 loadUrl ,它有助于在 Native 应用程序中加载我们的网页。

WebView webViewMain;
webViewMain = findViewById(R.id.webview);

webViewMain.getSettings().setJavaScriptEnabled(true);
webViewMain.addJavascriptInterface(this, "android");
webViewMain.loadUrl("https://www.example.com");

仍然在 MainActivity.java 文件中,我们需要在 onCreate() 函数之外添加一个类。这个类将存储我们想要在 javascript 中运行的所有函数,我们也可以从 javascript 中获取任何值以传输到 Java 原生应用程序变量。示例之一是 getId 函数,它将 HTML 标签中的 id 传输到本地应用程序中进行识别。

public class WebAppInterface {
    String value = "hello"
    
    @JavascriptInterface
    public String runValue() {
       return value;
    }
    @JavascriptInterface
    public int getId(id) {
       return id;
    }
}

要使用上述函数,下面是我们可以在 onCreate() 或其他侦听器函数中添加的语法。您可以识别出我们使用 loadUrl 来注入 javascript,在 loadurl 中我们可以使用每种 javascript 语法来导出网页。同样在 loadurl 中,我们需要添加上面已经创建的函数,并将 android 作为父函数。

webViewMain.loadUrl("javascript:window.onclick = function(e) {\n" +
    "android.getId(e.target.id);}");
webViewMain.loadUrl("javascript:android.getSpeechIndex()");

关注七爪网,获取更多APP/小程序/网站源码资源!

相关推荐

30天学会Python编程:16. Python常用标准库使用教程

16.1collections模块16.1.1高级数据结构16.1.2示例...

强烈推荐!Python 这个宝藏库 re 正则匹配

Python的re模块(RegularExpression正则表达式)提供各种正则表达式的匹配操作。...

Python爬虫中正则表达式的用法,只讲如何应用,不讲原理

Python爬虫:正则的用法(非原理)。大家好,这节课给大家讲正则的实际用法,不讲原理,通俗易懂的讲如何用正则抓取内容。·导入re库,这里是需要从html这段字符串中提取出中间的那几个文字。实例一个对...

Python数据分析实战-正则提取文本的URL网址和邮箱(源码和效果)

实现功能:Python数据分析实战-利用正则表达式提取文本中的URL网址和邮箱...

python爬虫教程之爬取当当网 Top 500 本五星好评书籍

我们使用requests和re来写一个爬虫作为一个爱看书的你(说的跟真的似的)怎么能发现好书呢?所以我们爬取当当网的前500本好五星评书籍怎么样?ok接下来就是学习python的正确姿...

深入理解re模块:Python中的正则表达式神器解析

在Python中,"re"是一个强大的模块,用于处理正则表达式(regularexpressions)。正则表达式是一种强大的文本模式匹配工具,用于在字符串中查找、替换或提取特定模式...

如何使用正则表达式和 Python 匹配不以模式开头的字符串

需要在Python中使用正则表达式来匹配不以给定模式开头的字符串吗?如果是这样,你可以使用下面的语法来查找所有的字符串,除了那些不以https开始的字符串。r"^(?!https).*&...

先Mark后用!8分钟读懂 Python 性能优化

从本文总结了Python开发时,遇到的性能优化问题的定位和解决。概述:性能优化的原则——优化需要优化的部分。性能优化的一般步骤:首先,让你的程序跑起来结果一切正常。然后,运行这个结果正常的代码,看看它...

Python“三步”即可爬取,毋庸置疑

声明:本实例仅供学习,切忌遵守robots协议,请不要使用多线程等方式频繁访问网站。#第一步导入模块importreimportrequests#第二步获取你想爬取的网页地址,发送请求,获取网页内...

简单学Python——re库(正则表达式)2(split、findall、和sub)

1、split():分割字符串,返回列表语法:re.split('分隔符','目标字符串')例如:importrere.split(',','...

Lavazza拉瓦萨再度牵手上海大师赛

阅读此文前,麻烦您点击一下“关注”,方便您进行讨论和分享。Lavazza拉瓦萨再度牵手上海大师赛标题:2024上海大师赛:网球与咖啡的浪漫邂逅在2024年的上海劳力士大师赛上,拉瓦萨咖啡再次成为官...

ArkUI-X构建Android平台AAR及使用

本教程主要讲述如何利用ArkUI-XSDK完成AndroidAAR开发,实现基于ArkTS的声明式开发范式在android平台显示。包括:1.跨平台Library工程开发介绍...

Deepseek写歌详细教程(怎样用deepseek写歌功能)

以下为结合DeepSeek及相关工具实现AI写歌的详细教程,涵盖作词、作曲、演唱全流程:一、核心流程三步法1.AI生成歌词-打开DeepSeek(网页/APP/API),使用结构化提示词生成歌词:...

“AI说唱解说影视”走红,“零基础入行”靠谱吗?本报记者实测

“手里翻找冻鱼,精心的布局;老漠却不言语,脸上带笑意……”《狂飙》剧情被写成歌词,再配上“科目三”背景音乐的演唱,这段1分钟30秒的视频受到了无数网友的点赞。最近一段时间随着AI技术的发展,说唱解说影...

AI音乐制作神器揭秘!3款工具让你秒变高手

在音乐创作的领域里,每个人都有一颗想要成为大师的心。但是面对复杂的乐理知识和繁复的制作过程,许多人的热情被一点点消磨。...

取消回复欢迎 发表评论: