首页 程序笔记 Android Studio创建安卓App通过WebView内嵌网页

Android Studio创建安卓App通过WebView内嵌网页

做了一个react的纯前端的应用,想要使用Android Studio创建一个安卓app通过WebView内嵌。

创建app和启动页之前有讲过

Android Studio Dolphin创建app启动页Splash自动跳转

https://www.leavescn.com/Articles/Content/1198

然后创建一个Activity,因为是用来放WebView,所以我命名为WebActivity。创建后在WebActivity.java文件里编写代码

package com.example.mymoney;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.view.KeyEvent;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.Toast;

public class WebActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        getSupportActionBar().hide();
        setContentView(R.layout.activity_web);
        WebView webView = (WebView)findViewById(R.id.wv_webview);
        String url = "需要内嵌的页面的Url";
        //此方法可以在webview中打开链接而不会跳转到外部浏览器
        webView.setWebViewClient(new WebViewClient());
        WebSettings webSettings = webView.getSettings();
        //此方法可以启用html5页面的javascript
        webSettings.setJavaScriptEnabled(true);
        webSettings.setDomStorageEnabled(true);
        webView.loadUrl(url);
    }

    private long exitTime = 0;
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        if(keyCode == KeyEvent.KEYCODE_BACK && event.getAction() == KeyEvent.ACTION_DOWN){
            if((System.currentTimeMillis()-exitTime) > 2000){
                Toast.makeText(getApplicationContext(), "再按一次退出程序", Toast.LENGTH_SHORT).show();
                exitTime = System.currentTimeMillis();
            } else {
                finish();
                System.exit(0);
            }
            return true;
        }
        return super.onKeyDown(keyCode, event);
    }
}

其中,getSupportActionBar().hide();是隐藏Bar让WebView全屏。

webSettings.setJavaScriptEnabled(true); 是设置允许执行javascript脚本。

webSettings.setDomStorageEnabled(true); 是允许读写localstorage也是比较重要。

onKeyDown方法实现的功能是当用户点击原生返回按钮时,提示再按一次退出程序。用户连续按两次返回就会退出app,这是目前一般app都是用的交互方式。

还有一个重要的设置是允许网络权限。

在manifests/AndroidManifest.xml文件里增加一个配置节点<uses-permission android:name="android.permission.INTERNET"/>

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools">
    <!--配置网络权限-->
    <uses-permission android:name="android.permission.INTERNET"/>
    <application
        android:allowBackup="true"
        android:dataExtractionRules="@xml/data_extraction_rules"
        android:fullBackupContent="@xml/backup_rules"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/Theme.MyMoney"
        tools:targetApi="31">
        <activity
            android:name=".WebActivity"
            android:exported="false">
            <meta-data
                android:name="android.app.lib_name"
                android:value="" />
        </activity>
        <activity
            android:name=".SplashActivity"
            android:exported="true">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>

            <meta-data
                android:name="android.app.lib_name"
                android:value="" />
        </activity>
    </application>

</manifest>

这样运行app就可以正常在webview里加载页面了。

1

站心网

做了一个react的纯前端的应用,想要使用Android Studio创建一个安卓app通过WebView内嵌。创建app和启动页之..

为您推荐

Visual Studio(VS)2022安装和使用通义灵码图文教程

通义灵码是阿里云推出的智能编程助手,基于大模型技术,提供代码补全、优化建议和自动化编程支持,提升开发效率。Visual Studio 2022 可通过扩展插件支持 通义灵码,为开发者提供智能代码补全、优化建议和高效编码体..

.net 通过 HttpClient 下载文件同时报告进度的方法

通过 HttpClient 的 ContentLength 很多时候都可以拿到下载的内容的长度,通过 ReadAsync 可以返回当前读到的长度,将读取到的长度加起来就是已经下载的长度看起来很简单,于是直接给代码private static async Task ..

ASP.NET 使用Entity Framework (EF) 创建迁移修改SQLite数据库表结构

在 ASP.NET 中,使用 Entity Framework (EF) 创建并连接 SQLite 数据库是一种轻量级、高效的数据库管理方式。以下是详细步骤:安装必要的 NuGet 包安装EntityFrameworkCore.Sqlite包:Install-Package Microsoft.Ent..

通过js修改tinymce的编辑器的内容

在网页开发中,TinyMCE是一个流行的富文本编辑器。它允许用户轻松地创建和编辑HTML内容,而无需直接操作代码。然而,有时我们可能需要通过JavaScript来动态修改编辑器中的内容。本文将介绍如何使用JavaScript来修改T..

常用的javascript网页数字滚动插件

在网页开发中,数字滚动效果广泛用于展示统计数据、计数器、动画化的数字效果等。以下是几款常用的 JavaScript 数字滚动插件:1. CountUp.js简介: CountUp.js 是一个轻量级的数字滚动插件,提供平滑的数字滚动动画效..

DrissionPage 基于Python的网页自动化工具

在数字化时代,网页自动化工具成为开发人员和数据分析师的得力助手。今天,我们将深入探索一款名为 DrissionPage 的全能网页自动化工具,它以其强大的功能和优雅的语法,成为 Python 程序员的新宠。什么是 DrissionP..

18款Visual Studio实用插件

Visual Studio插件搜索Visual Studio插件市场ReSharper(付费)GitHub Copilot(付费)CodeMaid(免费)CSharpier(免费)Visual Studio Theme Pack(免费)Indent Guides(免费)Markdown Editor(免费)HTML Snipp..

ViewData和ViewBag的区别,ViewData和ViewBag哪个更好

ViewData是Key/Value字典集合,从Asp.net MVC 1 就有了,是基于Asp.net 3.5 framework的,ViewData比ViewBag快,在ViewPage中查询数据时需要转换合适的类型。 而ViewBag是dynamic类型对像,是从ASP.NET MVC3 才有的..

_ViewStart.cshtml文件的作用

在ASP.NET MVC 3.0中,新建项目后,Views目录下会出现一个这样的文件:_ViewStart.cshtml(对应Razor,C#,也可能是_ViewStart.vbhtml) 。 _ViewStart.cshtml这个文件会在所有View(.cshtml)被执行之前执行,主要..

.NET Core 3.0创建一个单独的可执行文件

一个独立的应用程序是一个很好的方式来共享您的应用程序,因为所有的组件、运行时和框架都包含在应用程序中。您只需提供application.exe文件,而不必担心其他计算机上是否存在框架或运行时安装状态。.NET Core 3.0预..

使用htmlagilitypack+xpath抓取网页内容示例

本文使用htmlagilitypack+xpath抓取网页内容示例,用简单的例子展示如何使用htmlagilitypack抓取网页,可以用来做数据采集等功能。用htmlagilitypack+xpath抓取网页内容示例源码下载首先在nuget中获取htmlagilitypac..

.NET Core MVC应用程序创建教程

本文主要介绍如何创建一个.NET Core MVC应用程序。和大家一起了解一下.NET Core MVC项目中各个文件的作用。首先准备工作,大家需要安装VS2017 15.7.2版本,安装.NET Core2.0,安装VS的时候选择安装.NET Core相关功能..

.NET Core分部视图PartialView用法

什么时候用用分部视图?分部视图PartialView是执行下列操作的有效方式:将大型标记文件分解为更小的组件。在由多个逻辑部分组成的大型复杂标记文件中,在分部视图中处理隔开的每个部分是有利的。 标记文件中的代码是..

ASP.NET MVC View视图 .cshtml文件中创建方法

使用场景是在一个 cshtml 文件中想要递归输出html,所以需要定义一个输出html的方法,它的作用域仅限于这个页面。我们知道可以创建 HTMLHelper扩展方法或者在类中实现一个输出html string的方法。但是我们希望在View..

.Net Core HttpClient读取GB2312网页乱码

.NET Core使用HttpClinet抓取网页,使用Encoding.UTF8.GetString(arr)方法获取网页内容时中文会变成乱码。但是如果改为Encoding.GetEncoding("gb2312").GetString()方法的话会报错:'gb2312' is not a supported enc..

.NET MVC ViewBag ViewData Mmodel怎么选择?

在.NET MVC中,有三种不同的方式可以在控制器(Controller)和视图(View)之间传递数据,分别是ViewBag、ViewData和Model。ViewBag:ViewBag是一个动态属性(dynamic property),它允许在控制器中传递数据到视图中..

winform listview 双击事件

在WinForms中,你可以使用ListView控件的DoubleClick事件来处理双击事件。以下是一个示例代码:using System;using System.Windows.Forms;public class Form1 : Form{private ListView listView1;public Form1(){Ini..

winform listview 右键弹出菜单

要在WinForms的ListView控件上实现右键弹出菜单,你可以使用ContextMenu或ContextMenuStrip控件。以下是一个示例代码:using System;using System.Windows.Forms;public class Form1 : Form{private ListView listVi..

解释一下MVC(Model-View-Controller)和MVVM(Model-View-ViewModel)模式,并比较它们之间的区别。

MVC(Model-View-Controller)和MVVM(Model-View-ViewModel)是两种常见的软件架构模式,用于组织和分离应用程序中的不同部分。它们有一些相似之处,但也有一些明显的区别。MVC模式Model(模型):负责处理应用程序..

谷歌的AMP网页和AMP自动广告是什么?

最近在玩谷歌广告Google Adsense,看到谷歌有个AMP自动广告,查看了他的介绍觉得很有意思。谷歌广告联盟的官方介绍是这样的:AMP 自动广告会自动将 AdSense 自动广告放置在您的 AMP 网页上。在添加 AMP 自动脚本和广..

发表回复

返回顶部