Есть ли намерение обнаружить использование сети независимо от того, является ли это 3G или Wifi?
Я некоторое время изучал это и не смог найти конкретного решения.
Я пытаюсь определить, когда пользователь начал использовать свой интернет (3G, Wifi). (Или вот-вот начнется было бы еще лучше).
Кто-нибудь знает, есть ли намерение, которое могло бы обнаружить, что человек начинает использовать сеть? То, что я пытаюсь сделать, - это запустить какой-то код, как только пользователь начнет использовать свой интернет, независимо от того, 3G это или нет.
Я искал ConnectivityManager и Trafficstats(), но до сих пор не смог найти решение. Я не просто смотрю, доступно ли соединение.
Одним из решений, о котором я думал, было бы создание собственного намерения, но я не смог найти хорошую документацию о том, как создать свой собственный фильтр намерений. (большинство учебных пособий, которые я видел, говорят, что используют / задают ваше собственное намерение, но пренебрегают, чтобы сказать, как создать намерение). Из-за этого я предполагаю, что это нечто простое, что люди не чувствуют, стоит упомянуть.
Идея использования намерения заключалась в том, чтобы я мог инициировать выполнение кода в случае, если пользователь использует Интернет, а не просто подключен к нему. Это было бы предпочтительнее, чем иметь постоянно выполняющийся цикл, который ищет отправленные байты rx/tx.
Если у кого-то есть какие-либо идеи и примеры кода, которые будут очень благодарны.
ура
2 ответа
Я не знаю, помогает ли это, но с помощью этого кода я пытаюсь найти, когда устройство не подключено к сети. Я уверен, что вы можете изменить это, чтобы обнаружить его 3G или WiFi.
Скопировано из одного из моих проектов http://code.google.com/p/android-menu-navigator/
Вы можете комбинировать это с измененным состоянием соединения, упомянутым bandaa25, и я думаю, что вы сделали.
public boolean isOnWifi() {
Log.d(TAG, "Checking if we are on wifi");
final ConnectivityManager mgrConn = (ConnectivityManager) ctx.getSystemService(Context.CONNECTIVITY_SERVICE);
Log.d(TAG, "Retrieved connectivity manager");
final NetworkInfo network = mgrConn.getActiveNetworkInfo();
Log.d(TAG, "Retrieved network info: " + network);
final boolean result = network != null && network.getType() == ConnectivityManager.TYPE_WIFI;
Log.d(TAG, "Result : " + result);
return result;
}