热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

如何用Firebase在安卓中创建动态WebView?

如何用 Firebase 在安卓中创建动态 WebView?原文:https://www . geeksforgeeks . o

如何用 Firebase 在安卓中创建动态 WebView?

原文:https://www . geeksforgeeks . org/how-create-dynamic-web view-in-Android-with-firebase/

将一个网站转换成一个应用程序似乎是安卓系统上的一项基本任务。借助网络视图,我们可以在我们的安卓应用程序中显示任何网页。我们只需要实现网络视图的小部件,并在我们必须加载的网络视图中添加网址。因此,如果你正在寻找一个网站加载到你的应用程序,可以动态改变,而不需要重新格式化代码,那么这将变得更容易根据我们的要求动态更新我们的网络视图应用程序。因此,在本文中,我们将研究在我们的应用程序中使用 Android 中的 Firebase 实现动态 WebView。

我们将在本文中构建什么?

在本文中,我们将构建一个简单的应用程序,在其中我们将创建一个简单的网络视图,并从 Firebase 实时数据库 中为我们的网络视图加载一个网址。因此,如果我们想更改我们的网络视图的网址,我们可以很容易地更改我们的网络视图的网址,它将在我们的应用程序中自动更新。注意,我们将使用 Java 语言来实现这个项目。

分步实施

第一步:创建新项目

要在安卓工作室创建新项目,请参考如何在安卓工作室创建/启动新项目。注意选择 Java 作为编程语言。

第二步:将你的应用连接到 Firebase

创建新项目后。导航到顶部栏上的工具选项。点击火焰基地。点击 Firebase 后,你可以看到截图中下面提到的右栏。

在该列中,导航到 Firebase 实时数据库。点击那个选项,你会看到两个选项:连接应用程序到 Firebase 和添加 Firebase 实时数据库到你的应用程序。单击立即连接,您的应用程序将连接到 Firebase。之后点击第二个选项,现在你的应用程序连接到 Firebase。

完成此过程后,您将看到下面的屏幕。

现在验证您的应用程序是否连接到 Firebase。转到您的 build.gradle 文件。导航到应用程序>渐变脚本>构建.渐变文件,并确保以下依赖项已添加到您的依赖项部分。

实现' com . Google . firebase:firebase-数据库:19.6.0 '

如果上述依赖项没有添加到您的依赖项部分。添加此依赖项并同步您的项目。现在,我们将转向应用程序的 XML 部分。

步骤 3:使用 activity_main.xml 文件

转到 activity_main.xml 文件,参考以下代码。下面是 activity_main.xml 文件的代码。

可扩展标记语言


xml version="1.0" encoding="utf-8"?>
<RelativeLayout 
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">
    
    <WebView
        android:id="@+id/idWebView"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />
RelativeLayout>

第四步:在你的 AndroidManifest.xml 文件中添加互联网权限

在 AndroidManifest.xml 文件中添加互联网权限。

可扩展标记语言


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

步骤 5:使用 MainActivity.java 文件

转到MainActivity.java文件,参考以下代码。以下是MainActivity.java文件的代码。代码中添加了注释,以更详细地理解代码。

Java 语言(一种计算机语言,尤用于创建网站)


import android.os.Bundle;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.Toast;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import com.google.firebase.database.DataSnapshot;
import com.google.firebase.database.DatabaseError;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
import com.google.firebase.database.ValueEventListener;
public class MainActivity extends AppCompatActivity {
    // creating a variable for our Firebase Database.
    FirebaseDatabase firebaseDatabase;
    // creating a variable for our Database 
    // Reference for Firebase.
    DatabaseReference databaseReference;
    // creating a variable for our webview
    private WebView webView;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        // initializing variable for web view.
        webView = findViewById(R.id.idWebView);
        // below line is used to get the instance 
        // of our Firebase database.
        firebaseDatabase = FirebaseDatabase.getInstance();
        // below line is used to get reference for our database.
        databaseReference = firebaseDatabase.getReference("url");
        // calling method to initialize 
        // our web view.
        initializeWebView();
    }
    private void initializeWebView() {
        // calling add value event listener method for getting the values from database.
        databaseReference.addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(@NonNull DataSnapshot snapshot) {
                // this method is call to get the realtime updates in the data.
                // this method is called when the data is changed in our Firebase console.
                // below line is for getting the data from snapshot of our database.
                String webUrl = snapshot.getValue(String.class);
                // after getting the value for our webview url we are
                // setting our value to our webview view in below line.
                webView.loadUrl(webUrl);
                webView.getSettings().setJavascriptEnabled(true);
                webView.setWebViewClient(new WebViewClient());
            }
            @Override
            public void onCancelled(@NonNull DatabaseError error) {
                // calling on cancelled method when we receive
                // any error or we are not able to get the data.
                Toast.makeText(MainActivity.this, "Fail to get URL.", Toast.LENGTH_SHORT).show();
            }
        });
    }
}

将此代码添加到您的应用程序后。现在转到 Firebase ,点击右上角的转到控制台选项。

点击此屏幕后,您将看到下面的屏幕,其中包含您选择项目的所有项目。

在该屏幕中,单击左侧窗口中的实时数据库。

点击此选项后,您将看到右侧的屏幕。在此页面上,单击顶部栏中的规则选项。你会看到下面的屏幕。

在这个项目中,我们将我们的规则作为读写规则添加,因为我们不使用任何身份验证来验证我们的用户。因此,我们目前将其设置为 true 以测试我们的应用程序。改变规则后。点击右上角的发布按钮,您的规则将保存在那里。现在再次回到数据选项卡。现在,我们将从 Firebase 本身手动向 Firebase 添加数据。

第六步:在 Firebase 数据库控制台中添加 WebView URL

在 Firebase 的数据选项卡中,您将看到下面的屏幕。将光标悬停在 null 上,单击右侧的“+”选项,然后单击该选项。点击该选项后。添加下图中添加的数据。确保在名称字段中添加“url”,因为我们在代码中将 Firebase 的引用设置为“url”。所以我们必须把它设置为“url”。您可以更改引用,也可以在数据库中更改它。在值字段中,您必须添加要在网络视图中加载的网页的网址。

添加上述数据后,您将看到下面的屏幕。

添加这些数据后,运行您的应用程序并查看应用程序的输出。运行应用程序后,您可以查看 Firebase 控制台中的网站网址,并可以在您的网络视图中查看更改。

输出:

在视频中,我们正在从 Firebase 更改网站网址,您可以在应用程序中看到更改。

[https://media.geeksforgeeks.org/wp-content/uploads/20201231130654/Screenrecorder-2020-12-31-11-31-16-349.mp4](https://media.geeksforgeeks.org/wp-content/uploads/20201231130654/Screenrecorder-2020-12-31-11-31-16-349.mp4)
推荐阅读
  • 解决Bootstrap DataTable Ajax请求重复问题
    在最近的一个项目中,我们使用了JQuery DataTable进行数据展示,虽然使用起来非常方便,但在测试过程中发现了一个问题:当查询条件改变时,有时查询结果的数据不正确。通过FireBug调试发现,点击搜索按钮时,会发送两次Ajax请求,一次是原条件的请求,一次是新条件的请求。 ... [详细]
  • 解决Only fullscreen opaque activities can request orientation错误的方法
    本文介绍了在使用PictureSelectorLight第三方框架时遇到的Only fullscreen opaque activities can request orientation错误,并提供了一种有效的解决方案。 ... [详细]
  • Python 数据可视化实战指南
    本文详细介绍如何使用 Python 进行数据可视化,涵盖从环境搭建到具体实例的全过程。 ... [详细]
  • Framework7:构建跨平台移动应用的高效框架
    Framework7 是一个开源免费的框架,适用于开发混合移动应用(原生与HTML混合)或iOS&Android风格的Web应用。此外,它还可以作为原型开发工具,帮助开发者快速创建应用原型。 ... [详细]
  • 深入解析 Lifecycle 的实现原理
    本文将详细介绍 Android Jetpack 中 Lifecycle 组件的实现原理,帮助开发者更好地理解和使用 Lifecycle,避免常见的内存泄漏问题。 ... [详细]
  • 用阿里云的免费 SSL 证书让网站从 HTTP 换成 HTTPS
    HTTP协议是不加密传输数据的,也就是用户跟你的网站之间传递数据有可能在途中被截获,破解传递的真实内容,所以使用不加密的HTTP的网站是不 ... [详细]
  • Spring – Bean Life Cycle
    Spring – Bean Life Cycle ... [详细]
  • 本教程详细介绍了如何使用 Spring Boot 创建一个简单的 Hello World 应用程序。适合初学者快速上手。 ... [详细]
  • Flutter 2.* 路由管理详解
    本文详细介绍了 Flutter 2.* 中的路由管理机制,包括路由的基本概念、MaterialPageRoute 的使用、Navigator 的操作方法、路由传值、命名路由及其注册、路由钩子等。 ... [详细]
  • 本文详细介绍了如何解决DNS服务器配置转发无法解析的问题,包括编辑主配置文件和重启域名服务的具体步骤。 ... [详细]
  • MySQL 5.7 学习指南:SQLyog 中的主键、列属性和数据类型
    本文介绍了 MySQL 5.7 中主键(Primary Key)和自增(Auto-Increment)的概念,以及如何在 SQLyog 中设置这些属性。同时,还探讨了数据类型的分类和选择,以及列属性的设置方法。 ... [详细]
  • Android开发技巧:使用IconFont减少应用体积
    本文介绍如何在Android应用中使用IconFont来显示图标,从而有效减少应用的体积。 ... [详细]
  • 第二十五天接口、多态
    1.java是面向对象的语言。设计模式:接口接口类是从java里衍生出来的,不是python原生支持的主要用于继承里多继承抽象类是python原生支持的主要用于继承里的单继承但是接 ... [详细]
  • 在软件开发过程中,经常需要将多个项目或模块进行集成和调试,尤其是当项目依赖于第三方开源库(如Cordova、CocoaPods)时。本文介绍了如何在Xcode中高效地进行多项目联合调试,分享了一些实用的技巧和最佳实践,帮助开发者解决常见的调试难题,提高开发效率。 ... [详细]
  • 在《Cocos2d-x学习笔记:基础概念解析与内存管理机制深入探讨》中,详细介绍了Cocos2d-x的基础概念,并深入分析了其内存管理机制。特别是针对Boost库引入的智能指针管理方法进行了详细的讲解,例如在处理鱼的运动过程中,可以通过编写自定义函数来动态计算角度变化,利用CallFunc回调机制实现高效的游戏逻辑控制。此外,文章还探讨了如何通过智能指针优化资源管理和避免内存泄漏,为开发者提供了实用的编程技巧和最佳实践。 ... [详细]
author-avatar
看非诚勿扰是修炼
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有