アンドロイドデバイスにテザリングが有効になっていることをプログラムで確認できますか?テザリングが有効かどうかを確認する方法はありますか?
私はちょうどWifiManagerクラスを見ました。 WifiInfoのすべてのvatraiblesは、WIFIがデバイスでオフになっている場合と同じ値を表示します。
Thnaks、 よろしく
アンドロイドデバイスにテザリングが有効になっていることをプログラムで確認できますか?テザリングが有効かどうかを確認する方法はありますか?
私はちょうどWifiManagerクラスを見ました。 WifiInfoのすべてのvatraiblesは、WIFIがデバイスでオフになっている場合と同じ値を表示します。
Thnaks、 よろしく
はそうのような反射を、使用してみてください:
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
ある)
ありがとうございました! – softwaresupply
宣言されたすべてのメソッドを反復処理する必要はありません:Classクラスは「getDeclaredMethod」メソッドを持っています。私の答えのコードをチェックしてください。 –
まず、あなたは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"/>
すべての決勝戦の目的は何ですか?場合によってはこれらが必要ですか? – diedthreetimes
@diedthreetimesは:「?すべての決勝戦の目的は何これらのいくつかの例で必要とされていますか?」 - スタイル、自分自身への各コーディング。 [私は、最終的な使用する必要があります]を参照してください(https://programmers.stackexchange.com/q/48413/158721)と[最終虐待](https://programmers.stackexchange.com/q/98691/158721)。 – Daniel
少し追加:「getSystemService」がnullを返すかどうかを確認する必要があります。 –
テザリング機能がConneでありますctivityManagerクラスですが、パブリックAPIでは非表示になっています。 「公開されていないAPI」を使用する場合は、変更されたフレームワークJARが必要になるか、リフレクションを使用する必要があります。あなたが探しているメソッドはおそらくString [] ConnectivityManager#getTetheredIfaces()であり、現在係留されているネットワークインターフェイスを返します。 – Jens