java - 网络不可用时无法显示 Toast 通知

标签 java android android-studio networking

我正在尝试通过回调测试网络可用性。

我想在连接不可用时显示 toast 通知。当我可以访问互联网时, onAvailable() 工作正常。

onAvailable() 似乎不起作用。带有消息“无互联网连接”的 Toast 不会显示。

我已经阅读了文档中有关 unAvailable() 的一些信息。提到了超时值。我假设 onUnavailable() 在此超时后被调用。但是,如果它与问题有关,我不知道。

ConnectivityManager.NetworkCallback networkCallback = new ConnectivityManager.NetworkCallback() {
            @Override
            public void onAvailable(@NonNull Network network) {
                Toast.makeText(MainActivity.this, "Request successful", Toast.LENGTH_LONG).show();
            }

            @Override
            public void onUnavailable() {
                super.onUnavailable();
                Toast.makeText(MainActivity.this, "No internet connection", Toast.LENGTH_LONG).show();
        }
        };
        final ConnectivityManager connectivityManager
                = (ConnectivityManager) MainActivity.this.getSystemService(Context.CONNECTIVITY_SERVICE);


        connectivityManager.registerNetworkCallback(new NetworkRequest.Builder()
                .addCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET)
                .build(), networkCallback);

最佳答案

Apps targeting Android 7.0 (API level 24) and higher do not receive CONNECTIVITY_ACTION broadcasts if they declare the broadcast receiver in their manifest. Apps will still receive CONNECTIVITY_ACTION broadcasts if they register their BroadcastReceiver with Context.registerReceiver() and that context is still valid.

这是link寻求解决方案

关于java - 网络不可用时无法显示 Toast 通知,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57868633/

相关文章:

java - 延迟 EasyMock 验证

java - 如何将工具栏添加到 PreferenceActivity

android - 在 Android Studio 中找不到 GeoPoint 类?

android - 对话框 Activity 中的软键盘平移后面的 Activity

java - Android Studio错误: java version not found

java - Jmeter以重复的方式顺序运行单个线程组

java - 大内存(数据大小)采集

java - JPA XML 映射文件可以很好地解析,但在作为 JUnit 测试运行时无法解析

android-studio - Android Wear : Google Play services out of date. 需要 x 但找到 y

android-studio - 如何修改 gradle 文件以在 NDK 目录中运行 Make?