安卓混合开发,使用WebView控件展示网页

2023-11-04


页面使用webview控件来实现,WebView是Android系统提供能显示网页的系统控件,它是一个特殊的View,他的作用就是

  • 显示和渲染Web页面
  • 加载网络上或本地assets中的html文件
  • 与JavaScript交互调用

常用于同态变化比较大的页面时使用

第一步:

在AndroidManifest.xml下添加网络访问权限,如果需要外网访问的情况下

<!--网络权限-->
<uses-permission android:name="android.permission.INTERNET" />
<!--文件读写权限-->
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />

第二步:

在xml下添加WebView控件

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

第三步:

把 activity 中的内容复制过去,注意这里是本地加载:把 html 文件保存到了本地 asset 目录中,远程加载的话直接修改 loadUrl 即可

public class MainActivity extends AppCompatActivity {
    private WebView webv=null;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //获取到webview控件
        WebView webv=findViewById(R.id.mywebview);

        WebSettings webSettings = webv.getSettings();
        webSettings.setJavaScriptEnabled(true);//设置支持Javascript
        webSettings.setJavaScriptCanOpenWindowsAutomatically(true);//允许js弹出窗口

        //访问本地资源文件网页
        webv.loadUrl("file:///android_asset/index.html");

        //通过下面的代码阻止APP直接通过浏览器打开网页
        webv.setWebViewClient(new WebViewClient(){
            @Override
            public boolean shouldOverrideUrlLoading(WebView view, String url) {
                //使用WebView加载URL内容
                view.loadUrl(url);
                return  true;
            }
        });
        //如果要实习alert弹框,必须实现此监听事件
        webv.setWebChromeClient(new WebChromeClient() {
            @Override
            public boolean onJsAlert(WebView view, String url, String message, JsResult result) {
                // TODO Auto-generated method stub
                return super.onJsAlert(view, url, message, result);
            }
        });
    }
}

第四步:

创建assets目录

右键【app】-【New】-【Folder】-【Assets Folder】-【finish】

把目录下 test 文件夹内文件全部复制到 assets 目录中

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

安卓混合开发,使用WebView控件展示网页 的相关文章

  • RecyclerView 中的 OnLongItemClick

    我开始在 Android 中使用 RecyclerView 一切工作正常 直到我为我的适配器实现触摸侦听器 来自这个主题 https stackoverflow com a 26826692 2923403 https stackoverf
  • Android 隐藏键盘不起作用 - 无法隐藏软键盘

    我正在 Droid Incredible 上进行开发 并且也在 1 5 AVD 模拟器上进行了测试 我的选项卡小部件中的一个选项卡由一个列表视图和一行包含 EditText 和 Send 按钮 用于聊天功能 组成 单击 发送 后 我使用以下
  • 解码URIComponent抛出错误“URI格式错误”

    As unescape已被弃用 我已选择decodeURIComponent 但它没有按预期工作 decodeURIComponent无法解码以下 URI 组件 Coast 20Guard 20Academy 20to 20hold 20a
  • android 设置按下 Enter 键时隐藏键盘(在 EditText 中)

    When my user press Enter on the virtual android user validate entry keyboard my keyboard stay visible Why 这是我的 Java 代码 p
  • 如何在 Android 中将一种跨度类型更改为另一种跨度类型?

    我想将一种类型的所有跨度放入一个CharSequence并将它们转换为不同的类型 例如 将所有粗体跨度转换为下划线跨度 我该怎么做呢 这是我今天遇到的问题 既然我现在已经解决了 我在这里添加一个问答对 我的答案如下 如何将跨度从一种类型更改
  • 在哪里存储字符串值?在 strings.xml 中还是在常量类中?

    在android中 我们可以将字符串值存储在strings xml文件中或某些常量类中作为静态最终变量 在某些情况下是否有理由选择一个而不是另一个 简而言之 代码中使用的值 始终使用常量类 优点 代码保持集成 并且您的包可以在其他项目 上下
  • 如何在 Android webRTC 上启用 H264

    如何在 Android WebRTC 上启用 H264 PeerConnection to createOfferSDP中没有h264描述 由于某种原因 Google 默认会阻止他们自己的软件编解码器 因此 如果您的芯片组中没有硬件解码 或
  • 如何访问打字稿中的组件

    我有一个基本的 Angular 应用程序 如下所示 app component html h1 Test Umgebung h1 div div
  • CSS/Javascript 将单词与特定字符对齐

    我如何使用 CSS Javascript 将 html 中的单词与该单词中的任意字符对齐 更改对齐字符的样式 例如使其粗体 以与其他字符形成对比 如本例中所示 对齐和粗体 k e t 和 f stack overflow stack ove
  • Knockout.js——理解 foreach 和 with

    我一直在阅读 learn knockout js 教程并进行实验 有人可以解释为什么这有效吗 教程 单页应用程序 步骤 2 使用with chosenFolderData and foreach mails table class mail
  • 在 Android 中读取蓝牙 RSSI 以获取 BLE 邻近配置文件

    我目前正在为 Android 开发低功耗蓝牙接近配置文件 并且偶然发现了有关 RSSI 的问题 为了使邻近配置文件起作用 我必须每隔很短的时间就通过已连接的设备接收 RSSI 数据 正如我所做的一些研究 我了解到在设备发现过程中可以获得蓝牙
  • 如何在外部 .js 文件中分离 .vue 组件的方法?

    我的组件留下了许多行代码 因此我决定将这些方法放在一个名为functions js 的单独文件中 我无法调用这些方法 我试过这个 函数 js function sendList function getLists function dele
  • 使用 JavaScript 检测硬重新加载

    为了澄清 I am not试图区分刷新和重新加载 因此这不是重复的刷新与重新加载 https stackoverflow com questions 5004978 check if page gets reloaded or refres
  • 在 Java、Android 上从 Youtube 下载视频的代码

    我创建了从 Youtube 下载视频的代码 但此代码不适用于 Wi fi 连接 但适用于移动连接 我哪里有错误 import java io File import java io FileOutputStream import java
  • 如何在闪亮的仪表板侧栏中手动展开子菜单

    我正在尝试手动展开闪亮仪表板侧边栏中的子菜单 这updateTabItems该功能仅适用于普通菜单 不适用于嵌套菜单 这是基本示例 修改自updateTabItems文档 来显示问题 如果我单击 切换选项卡 它会切换菜单 但不会展开具有子菜
  • 脚本内的角度范围

    我们可以使用脚本标记内范围中定义的角度变量 如下所示 HTML 代码 div div JS CODE function AngularCtrl scope scope user name John 我只是得到 scope 未定义 有人可以帮
  • 检查列表视图中的复选框也会检查其他随机复选框

    每当我在列表视图中选中一个复选框时 其他随机复选框也会被选中 这可能是由于列表视图回收项目所致 我也尝试过设置android focusable false 按照某些地方的建议 添加到我的布局中的复选框 但是当选中其复选框时 仍然不会调用
  • 如何从 Backbone 集合中提取多个属性?

    我试图从 Backbone 集合中提取多个属性 但它返回undefined 收藏 id 1 name raju age 23 sex male hobbies id 2 name ramesh age 43 sex male hobbies
  • 如何获取firestore集合下的文档数量? [复制]

    这个问题在这里已经有答案了 我想获取 firestore 集合中的文档总数 我正在制作一个论坛应用程序 所以我想显示每个讨论中当前的评论量 有类似的东西db collection comments get lenght或类似的东西 随着si
  • 使用 ADB 或 java 代码更改默认的 Android 键盘

    我正在构建一个使用特定键盘的自定义应用程序 因此当用户运行该应用程序时 默认键盘应更改为我的特定键盘 名称为黑客键盘 我如何使用java代码或从java代码调用adb命令来做到这一点 我的设备已获得 root 权限 这又是特定的应用程序 而

随机推荐

  • 7107小时时,加入创业公司(没有股份,当作经验吧)

    只是第一个项目是web项目 与vr无关 所以此项目耗费时间不计入1万小时之内 也不算是第五个项目 不过也算是里程碑 至少2017年有稳定项目来源了吧 主要也是学经验 以后如果开自己的公司的话 能有所借鉴 还是要努力的 才能多接触各方面 主要
  • windows 10 vs2017 x264的编译和使用测试

    做了一次更新 工具改成vs2019了 x264这个sdk非常棒 主页 x264 the best H 264 AVC encoder VideoLANhttps www videolan org developers x264 html 在
  • 01. Web漏洞靶场的搭建

    01 Web漏洞靶场的搭建 Web漏洞靶场的搭建 上 什么是Web安全 什么是Web Web是互联网的总称 全称为World Wide Web 缩写WWW 即全球广域网 也称为万维网 它是一种基于超文本和HTTP的 全球性的 动态交互的 跨
  • Vue3正式发布那么久了,你认识Pinia了吗?

    个人简介 个人主页 前端杂货铺 学习方向 主攻前端方向 正逐渐往全干发展 个人状态 研发工程师 现效力于中国工业软件事业 人生格言 积跬步至千里 积小流成江海 推荐学习 前端面试宝典 Vue2 Vue3 Vue2 3项目实战 Node js
  • StringBoot+Mybatis的增删改查(四)

    整体项目链接地址 StringBoot Mybatis的增删改查 一 StringBoot Mybatis的增删改查 二 StringBoot Mybatis的增删改查 三 StringBoot Mybatis的增删改查 四 StringB
  • vue练习,写游戏

  • 【异常问题】nvcc fatal : Unsupported gpu architecture ‘compute_86‘ 解决方案

    目录 异常问题 nvcc fatal Unsupported gpu architecture compute 86 解决方案 1 报错信息 2 系统环境 3 原因分析 4 解决方案 异常问题 nvcc fatal Unsupported
  • Verilog基础语法(一)

    一 数据类型 在Verilog语言中主要有三大数据类型 寄存器数据类型 线网数据类型 参数数据类型 1 寄存器数据类型 关键字 reg reg类型数据默认初始值为不定值X 需要注意的是reg类型的数据只能在always语句和initial语
  • 基于MATLAB R2018a库函数构建KNN分类器

    基于MATLAB R2018a库函数构建KNN分类器 基于MATLAB R2018a库函数构建KNN分类器 从一个库函数fitcknn 谈起 构造函数 类的属性 Properties 方法成员 Methods 构建和使用KNN分类器 基于M
  • python高级数据类型

    序列 字符串 列表 元组 在python中 序列就是一组按照顺序排列的值 数据集合 python中存在三种内置的序列类型 字符串 列表 元组 优点 支持索引和切片的操作 特征 第一个正索引为0 指向的是左端 第一个索引为负数 指向的是右端
  • 深入理解设计原则之接口隔离原则(ISP)【软件架构设计】

    系列文章目录 C 高性能优化编程系列 深入理解软件架构设计系列 深入理解设计模式系列 高级C 并发线程编程 LSP 接口隔离原则 系列文章目录 1 接口隔离原则的定义和解读 2 案例解读 3 如何判断一个接口是否符合接口隔离原则 小结 1
  • 如何用element-ui的table做一个模糊搜索功能

    一 在表格标题处增加一个input用来根据关键字搜索库房 用v model search 绑定输入 下面是
  • Hash算法

    目录 一 Hash基本概念 1 特点 2 hash的目的及用途 二 常用Hash算法 1 MD5算法 2 加盐 3 SHA系列算法与HashTools工具类 4 RipeMD 160算法 一 Hash基本概念 哈希算法也叫摘要算法 是一种用
  • 一文搞懂什么是 PostCSS

    一文搞懂什么是 PostCSS 在 Web 应用开发中 CSS 代码的编写是重要的一部分 CSS 规范从最初的 CSS1 到现在的 CSS3 再到 CSS 规范的下一步版本 规范本身一直在不断的发展演化之中 这给开发人员带来了效率上的提高
  • [转]转型后的BlackBerry“恋上”汽车市场,QNX拿什么与免费的安卓/Linux对抗?

    如果你认为本系列文章对你有所帮助 请大家有钱的捧个钱场 点击此处赞助 赞助额0 1元起步 多少随意 声明 本文只用于个人学习交流 若不慎造成侵权 请及时联系我 立即予以改正 锋影 email 174176320 qq com BlackBe
  • 深信服应用交付管理系统远程命令执行漏洞复现

    文章目录 深信服应用交付管理系统远程命令执行漏洞复现 0x01 前言 0x02 漏洞描述 0x03 影响范围 0x04 漏洞环境 0x05 漏洞复现 1 访问漏洞环境 2 构造POC 3 复现 深信服应用交付管理系统远程命令执行漏洞复现 0
  • springboot 打成jar后读取resources下面的文件

    1 使用idea开发过程中获取resources的路径是使用的这个方法 File file ResourceUtils getFile ResourceUtils CLASSPATH URL PREFIX 文件名称 data 然后就可以获取
  • idea中连接mysql插入成功数据,在navicat中刷新表格没有数据?

    目录 一 出现问题 二 尝试解决 三 发现问题 四 解决方法 一 出现问题 在写一个数据库的大作业时 在idea中连接mysql后 测试insert的dao方法 在控制台没有报错 显示题添加数据成功 但是在navicat中刷新表格却没有数据
  • 开发日记(5) 我们如何让EditText的光标消失呢?

    很多日子没有分享文章 赶项目呢 3人5项目 好烦啊 正题 这是分享的 原文章 http www cnblogs com yejiurui archive 2013 01 02 2841945 html 在我们的应用中 有时候一进入一个页面
  • 安卓混合开发,使用WebView控件展示网页

    页面使用webview控件来实现 WebView是Android系统提供能显示网页的系统控件 它是一个特殊的View 他的作用就是 显示和渲染Web页面 加载网络上或本地assets中的html文件 与JavaScript交互调用 常用于同