Есть ли способ проверить, активен ли модем? - PullRequest
5 голосов
/ 04 ноября 2011

Могу ли я программно проверить, активировано ли устройство Android?

Я только что посмотрел класс WifiManager.Все vatraibles из WifiInfo показывают те же значения, что и в том случае, если WIFI выключен на устройстве.

Ответы [ 2 ]

7 голосов
/ 04 ноября 2011

Попробуйте использовать отражение, вот так:

WifiManager wifi = (WifiManager) getSystemService(Context.WIFI_SERVICE);
Method[] wmMethods = wifi.getClass().getDeclaredMethods();
for(Method method: wmMethods){
if(method.getName().equals("isWifiApEnabled")) {

try {
  method.invoke(wifi);
} catch (IllegalArgumentException e) {
  e.printStackTrace();
} catch (IllegalAccessException e) {
  e.printStackTrace();
} catch (InvocationTargetException e) {
  e.printStackTrace();
}
}

(Возвращает Boolean)


Как предположил Деннис, лучше использовать это:

    final Method method = manager.getClass().getDeclaredMethod("isWifiApEnabled");
    method.setAccessible(true); //in the case of visibility change in future APIs
    return (Boolean) method.invoke(manager);

(менеджер WiFiManager)

6 голосов
/ 06 декабря 2013

Сначала вам нужно получить WifiManager:

Context context = ...
final WifiManager wifi = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);

Затем:

public static boolean isSharingWiFi(final WifiManager manager)
{
    try
    {
        final Method method = manager.getClass().getDeclaredMethod("isWifiApEnabled");
        method.setAccessible(true); //in the case of visibility change in future APIs
        return (Boolean) method.invoke(manager);
    }
    catch (final Throwable ignored)
    {
    }

    return false;
}

Также вам нужно запросить разрешение в AndroidManifest.xml:

<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
...