我想知道移动网络是启用还是禁用。
我的应用程序旨在帮助用户在接到电话时,我需要互联网接入。因此,如果wi-fi有睡眠策略并且移动网络被禁用,我想在用户第一次访问应用程序时显示一个信息框。(我需要在电话响后几毫秒内上网)。
我找到了settings.system.wi fi_sleep_策略,但找不到任何有关如何检查移动网络是否已禁用的信息(当wi-fi处于打开和工作状态时)。
任何帮助都将不胜感激!
编辑:
问题是我想知道用户是否打开了移动网络(而手机当时可以有wifi接入)。

最佳答案

我终于找到了解决办法。显然不是所有的手机都有这个选择:
主页>菜单>设置>无线和网络>移动网络(复选框)
但是,对于那些这样做的人,这种方法将起作用:

/**
 * @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;
    }
}

07-24 09:48
查看更多