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

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

В этой ссылке указано, как тестировать фоновые данные, но она устарела. В рекомендации говорится использовать 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
        }

Как я уже сказал, я не могу претендовать на кредит, чтобы знать это, на мой вопрос ответил https://stackoverflow.com/users/769265/david-wasser

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