【问题标题】:How to stop broadcast receiver to be fired when activity first launched如何在活动首次启动时停止广播接收器被触发
【发布时间】:2019-03-24 04:39:53
【问题描述】:

我问了以下引用的问题,但发现所有工作都徒劳无功,因为 android 现在不允许注册广播以进行网络更改。

您不能在 Manifest 中执行此操作,因为当您在 Activity 中注册它并且该上下文仍然存在时,您仍然可以获得呼叫。

现在我已经在我的活动中实现了,我正在接到我的广播接收器呼叫,一切都按预期工作。但是当我开始我的活动时,我会自动接到电话。我不能在活动开始时跳过那件事吗?

这是我在这个帖子中提出的老问题:

我有一个应用程序,我在其中为网络更改实现了 BroadcastReceiver。

当网络连接发生任何变化时,它会提醒我,例如 网络断开,网络连接,网络 得到改变等

但我发现当 Wifi 连接时它不会提醒我 已连接,但 Internet 从该网络断开。

有什么可以检查这种情况的吗?我们可以为它制作广播吗 ??

我搜索了很多,但没有得到任何答案。我希望我做到了 我自己很清楚我的要求。

【问题讨论】:

标签: java android android-internet


【解决方案1】:

您查看过这里的文档吗?

https://developer.android.com/training/monitoring-device-state/connectivity-monitoring?hl=es-419

它解释了如何使用 ConnectivityManager 来检查连接的变化

ConnectivityManager cm =
    (ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE);

NetworkInfo activeNetwork = cm.getActiveNetworkInfo();
boolean isConnected = activeNetwork != null &&
                  activeNetwork.isConnectedOrConnecting();

你甚至可以检查类型:

boolean isWiFi = activeNetwork.getType() == ConnectivityManager.TYPE_WIFI;

甚至允许您的应用(通过清单)通过支持此操作来考虑更改:

<action android:name="android.net.conn.CONNECTIVITY_CHANGE"/> 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多