android - 如何验证用户是否有网络访问权限并在没有网络访问权限时显示弹出警报
问题描述
我的名字是 Pablo,我目前正在构建一个 Flutter 应用程序。因此,我的应用程序从 Firebase 存储中获取了一些图像和音频,显然,在没有互联网连接的情况下,应用程序不会显示图像并且不会播放音频。我希望应用程序在没有 WIFI 或数据时向用户弹出警报;我怎样才能做到这一点?
谢谢 :)
解决方案
你可以简单地使用一个函数来检查你是否有网络连接,通过 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());
}
});
推荐阅读
- sql-server - 执行 STUFF 返回查询字符串而不存储到变量中
- angular - Angular + Material Table - 如果我使用 un Pipe 过滤器,如何拖放行
- python - 检查目标时出错:预期 dense_9 的形状为 (1,) 但得到的数组的形状为 (20,)
- date - vscode在每个新行中插入日期时间?
- javascript - 尝试使用 rest api 创建 Hpalm 缺陷时出现“415 Unsupported Media Type”
- visual-studio-code - Visual Studio 代码用户片段大写不能正常工作
- php - 十月CMS | 是否可以禁用某些行的复选框或隐藏某些行?
- java - 需要按预期将长字符串值发送到excel
- jsf - 为什么命令按钮关闭我的对话框
- python - 尝试移动文件但无法通过 Python 移动文件夹