1

変更できるシステム設定と変更できないシステム設定 (セキュリティで保護された設定) のリストを見つけましたが、Wifi-Direct (ICS) の有効化/無効化はどちらにもありません。アプリの起動時に Wi-Fi Direct を自動的にオンにするにはどうすればよいですか?

4

3 に答える 3

3

残念ながら、これを達成するための公的な方法はありません。ICS と JB の両方の設定アプリは、マネージャー クラスの隠しメソッドを使用して、サービスの有効/無効を切り替えます。

  • ICS では、WifiP2PManager.enableP2P() と WifiP2PManager.disableP2P() が使用されていましたが、どちらも隠しメソッドでした。
  • JB では、NsdManager.setEnabled() が使用されます。

これらのクラスにはメソッドが存在するため、可能です。ただし、この違いにより、アプリケーションから直接機能を提供するためには、バージョン固有のリフレクション コードを作成する必要があります。

より良い解決策は、サービスが有効になっているかどうかを確認し、[ワイヤレス設定] ページに直接移動するダイアログをユーザーに表示して、必要に応じて WiFi Direct を有効にすることです。

于 2012-07-16T21:45:41.793 に答える
1

JBは同時実行の概念を導入しています。これは、wifiがオンになっている限り、アプリケーションが直接wifiをオンにする必要がないことを意味します。

ICSの場合、ユーザーをワイヤレス設定に移動して、ユーザーがオンにできるようにするのが最善です。

于 2012-07-20T17:11:18.047 に答える
-1

WiFiマネージャーを使用しようとしましたか?アクティビティ内で次のように切り替えることができるはずです。

WifiManager wifi = (WifiManager)getSystemService(Context.WIFI_SERVICE);
if (!wifi.isWifiEnabled()){
  wifi.setWifiEnabled(true);
}

これでWIFIがオンになるはずですが、Wifi接続があることを保証するものではありません。WifiManagerを使用してWifiInfoを検索することもできます

WifiInfo wifiInfo = wifi.getConnectionInfo();

または、アクセスポイントにpingを実行します

if (wifi.pingSupplicant()){
  //at least connected to a network
}
于 2012-07-16T21:16:17.430 に答える