android - 如何检查移动网络是否启用/禁用

标签 android

我想知道移动网络是启用还是禁用。

我的应用程序旨在帮助用户接到电话,为此我需要访问 Internet。因此,如果 Wi-Fi 有 sleep 策略并且移动网络被禁用,我想在用户第一次访问应用程序时显示一个信息框。 (我需要在电话响起后的几毫秒内上网)。

我找到了 Settings.System.WIFI_SLEEP_POLICY,但我找不到任何关于如何检查移动网络是否被禁用(当 Wi-Fi 开启并工作时)的信息。

如有任何帮助,我们将不胜感激!

编辑: 问题是我想知道用户是否关闭了移动网络(当时手机可以访问 WiFi)。

最佳答案

我终于找到了解决办法。显然不是所有手机都有这个选项:

Home > Menu > Settings > Wireless & networks > Mobile network (checkbox)

但是,对于那些这样做的人来说,这个方法会奏效:

/**
 * @return null if unconfirmed
 */
public Boolean isMobileDataEnabled(){
    Object connectivityService = getSystemService(CONNECTIVITY_SERVICE); 
    ConnectivityManager cm = (ConnectivityManager) connectivityService;

    try {
        Class<?> c = Class.forName(cm.getClass().getName());
        Method m = c.getDeclaredMethod("getMobileDataEnabled");
        m.setAccessible(true);
        return (Boolean)m.invoke(cm);
    } catch (Exception e) {
        e.printStackTrace();
        return null;
    }
}

关于android - 如何检查移动网络是否启用/禁用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8224097/

相关文章:

android - 如何将图像转换为base64以使用http帖子请求发送

java - 运行方法在 BroadcastReceiver 中有效,但循环方法失败

Android 后退按钮无法在 fragment 中工作

android - 将 LibGDX 添加到现有的 Android Studio 项目中

java - 从通知栏调用工作类

java - Android新构建系统(gradle)和aspectj

android - 尝试在适配器内添加 fragment

android - Python - Kivy 是否在 Android 应用程序中实现 Activity ?

android - 尝试使用回收位图 android.graphics.Bitmap

Android RecyclerView CardView StaggedGridLayoutManager : Independent column scroll