Проверьте, включены ли фоновые данные и пакетные данные или нет
Я хочу определить, активировал ли пользователь как фоновые данные (настройки-> учетные записи и синхронизация-> фоновые данные), так и пакетные данные (настройки-> беспроводные и сетевые-> мобильные сети-> использовать пакетные данные), чтобы я мог информировать пользователя как их включить.
Эта ссылка говорит о том, как проверить фоновые данные, но они устарели. Рекомендация гласит, что следует использовать 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
но это стоило мне, поэтому, если вы хотите принять это как ответ, я могу начать возвращать мне некоторые очки моей репутации!:)