Проверьте, включены ли фоновые данные и пакетные данные или нет

Я хочу определить, активировал ли пользователь как фоновые данные (настройки-> учетные записи и синхронизация-> фоновые данные), так и пакетные данные (настройки-> беспроводные и сетевые-> мобильные сети-> использовать пакетные данные), чтобы я мог информировать пользователя как их включить.

Эта ссылка говорит о том, как проверить фоновые данные, но они устарели. Рекомендация гласит, что следует использовать getActiveNetworkInfo(), но это может вернуть соединение WIFI и, следовательно, не отображать, включены ли фоновые данные или нет.

Я не нашел никаких ссылок на то, как определить, включены ли пакетные данные или нет.

1 ответ

Решение

У меня был точно такой же вопрос, и я должен был получить награду, чтобы получить ответ. Это стоило мне трети моей репутации, но оно того стоит.

boolean mobileDataEnabled = false; // Assume disabled
        ConnectivityManager cm1 = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
        try {
            Class cmClass = Class.forName(cm1.getClass().getName());
            Method method = cmClass.getDeclaredMethod("getMobileDataEnabled");
            method.setAccessible(true); // Make the method callable
            // get the setting for "mobile data"
            mobileDataEnabled = (Boolean)method.invoke(cm1);
        } catch (Exception e) {
            // Some problem accessible private API
            // TODO do whatever error handling you want here
        }

Как я уже сказал, я не могу претендовать на кредит, потому что знаю это, на мой вопрос ответил David Wasser

но это стоило мне, поэтому, если вы хотите принять это как ответ, я могу начать возвращать мне некоторые очки моей репутации!:)

Другие вопросы по тегам