【问题标题】:Retrieving data from Firebase database to webView in Android将数据从 Firebase 数据库检索到 Android 中的 webView
【发布时间】:2020-08-11 16:10:26
【问题描述】:

我正在构建一个使用 webViewFirebase 作为数据库的应用程序,我已经正确实现了两者,但问题是我的 webView 没有检索 Firebase 数据库中的任何数据,当我打开应用程序时显示为空白,我已经通过直接添加 URL 检查了 webView,它显示了网页,但是当我将它与 Firebase 一起使用时它没有显示任何内容,请帮助解决这个问题。

我正在使用 Android Studio

webView 类文件:

public class webViewNews extends AppCompatActivity {

    private WebView webviewthis;
    private RecyclerView webVieRes;
    private DatabaseReference mdataRef;



    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.webview_page);
        mdataRef = FirebaseDatabase.getInstance().getReference().child("weber");
        webviewthis = (WebView)findViewById(R.id.webView_news);
        webviewthis.setWebViewClient(new WebViewClient());
        webviewthis.getSettings().setJavaScriptEnabled(true);
        webviewthis.getSettings().setLoadsImagesAutomatically(true);
        mdataRef.addListenerForSingleValueEvent(new ValueEventListener() {
            @Override
            public void onDataChange(DataSnapshot dataSnapshot) {
             post2web webView = dataSnapshot.getValue(post2web.class);
                webviewthis.loadUrl(webView);
            }
            @Override
            public void onCancelled(DatabaseError databaseError) {

            }
        });

    }
}

webView xml 文件:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

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

  </LinearLayout>

getter 和 setter 类文件:

public class post2web {
    private String webViewPost;


    public post2web(){
    }

    public post2web(String webViewPost) {
        this.webViewPost = webViewPost;
    }


    public String getWebViewPost() {
        return webViewPost;
    }

    public void setWebViewPost(String webViewPost) {
        this.webViewPost = webViewPost;
    }
}

Firebase 规则:

用于 webView 的 Firebase 数据库结构

【问题讨论】:

  • 你应该这样做webviewthis.loadUrl(webView.getWebViewPost());
  • @MarianoCordoba 已经尝试过了,但它不起作用:(
  • 您可以访问 Firebase 数据库吗?检查你的规则。
  • 不要忽视onCancelled@Override public void onCancelled(DatabaseError databaseError) { throw databaseError.toException(); }
  • @FrankvanPuffelen 这个 throw databaseError.toException(); 会发生什么

标签: android firebase webview firebase-realtime-database android-webview


【解决方案1】:

您的代码有效。我很确定唯一的问题是 Firebase 数据库规则。

在 Firebase 中更改您的数据库规则,一切都会正常进行。

【讨论】:

  • 我想我的规则还可以,我要贴在上面请检查
  • 使用该规则,您需要通过身份验证才能访问数据库。你认证了吗?如果没有,请使用此规则并重试。
  • 该死,这真的很奇怪。我正在使用您的代码,一切正常。您可以发布您的 Firebase 数据库结构吗? (隐藏敏感信息)
  • 我真的很抱歉它很难隐藏,那里有很多东西不能完全隐藏。请你给我看看你的,因为它很容易,我会告诉你我是否执行相同的操作。希望你能理解
  • 好的,我可以尽可能多地向您展示,请告诉我可以吗,我将在上面更新它
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-06-21
  • 1970-01-01
  • 2018-11-07
  • 2021-01-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多