首页 > 解决方案 > 如何验证用户是否有网络访问权限并在没有网络访问权限时显示弹出警报

问题描述

我的名字是 Pablo,我目前正在构建一个 Flutter 应用程序。因此,我的应用程序从 Firebase 存储中获取了一些图像和音频,显然,在没有互联网连接的情况下,应用程序不会显示图像并且不会播放音频。我希望应用程序在没有 WIFI 或数据时向用户弹出警报;我怎样才能做到这一点?

谢谢 :)

标签: androidfirebaseflutterfirebase-storage

解决方案


你可以简单地使用一个函数来检查你是否有网络连接,通过 ping Google 服务器:

/system/bin/ping -c 1 8.8.8.8

在 Android 中,此函数如下所示:

public boolean isNetworkAvailable() {
    Runtime runtime = Runtime.getRuntime();
    try {
        Process process = runtime.exec("/system/bin/ping -c 1 8.8.8.8");
        int exitValue = process.waitFor();
        return (exitValue == 0);
    } catch (IOException | InterruptedException e) {
        e.printStackTrace();
    }
    return false;
}

在 Firestore 中,默认情况下会启用离线持久性。因此,您可以检查用户是从缓存中读取数据还是从 Firebase 服务器读取数据。更优雅的方式是使用isFromCache()函数。这是安卓的代码:

yourDocRef.addSnapshotListener(new DocumentListenOptions().includeMetadataChanges(), new EventListener<DocumentSnapshot>() {
    @Override
    public void onEvent(DocumentSnapshot documentSnapshot, FirebaseFirestoreException e) {
        Log.d("listener.isFromCache: " + documentSnapshot.getMetadata().isFromCache());
    }
});

推荐阅读