2011-11-04 25 views
5

アンドロイドデバイスにテザリングが有効になっていることをプログラムで確認できますか?テザリングが有効かどうかを確認する方法はありますか?

私はちょうどWifiManagerクラスを見ました。 WifiInfoのすべてのvatraiblesは、WIFIがデバイスでオフになっている場合と同じ値を表示します。

Thnaks、 よろしく

+0

テザリング機能がConneでありますctivityManagerクラスですが、パブリックAPIでは非表示になっています。 「公開されていないAPI」を使用する場合は、変更されたフレームワークJARが必要になるか、リフレクションを使用する必要があります。あなたが探しているメソッドはおそらくString [] ConnectivityManager#getTetheredIfaces()であり、現在係留されているネットワークインターフェイスを返します。 – Jens

答えて

7

はそうのような反射を、使用してみてください:

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ある)

+0

ありがとうございました! – softwaresupply

+0

宣言されたすべてのメソッドを反復処理する必要はありません:Classクラスは「getDeclaredMethod」メソッドを持っています。私の答えのコードをチェックしてください。 –

5

まず、あなたは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"/> 
+0

すべての決勝戦の目的は何ですか?場合によってはこれらが必要ですか? – diedthreetimes

+0

@diedthreetimesは:「?すべての決勝戦の目的は何これらのいくつかの例で必要とされていますか?」 - スタイル、自分自身への各コーディング。 [私は、最終的な使用する必要があります]を参照してください(https://programmers.stackexchange.com/q/48413/158721)と[最終虐待](https://programmers.stackexchange.com/q/98691/158721)。 – Daniel

+0

少し追加:「getSystemService」がnullを返すかどうかを確認する必要があります。 –

関連する問題