2015-05-13 43 views
2

我正在研究应用程序,该应用程序应能检测到设备周围的WiFi网络。我想检测“始终可用的扫描”是否打开,但我无法找到。我知道这是可能的,因为谷歌现在,实际上做:检测WiFi扫描是否始终可用

enter image description here

回答

7

可以使用isScanAlwaysAvailable() method in WifiManager

我刚刚在Android 4.4上进行了测试,它的工作原理。

要查询状态,显示提示,如果是禁用,使用此代码(我把它放在onCreate()):

WifiManager wifiManager = (WifiManager) getSystemService(Context.WIFI_SERVICE); 
    if (Build.VERSION.SDK_INT >= 18) { 
     if (wifiManager.isScanAlwaysAvailable()) { 
      Toast.makeText(this, "Scan always available is on", Toast.LENGTH_SHORT).show(); 
     } 
     else{ 
      startActivityForResult(new Intent(WifiManager.ACTION_REQUEST_SCAN_ALWAYS_AVAILABLE), 100); 
     } 
    } 
    else{ 
     //Not supported 
    } 

然后,使用此代码捕获的决定,即用户在做在提示的情况下,它被禁用:

@Override 
protected void onActivityResult (int requestCode, int resultCode, Intent data){ 
    if (requestCode == 100) { 
     if (resultCode == RESULT_OK) { 
      Toast.makeText(this, "User enabled Scan always available", Toast.LENGTH_SHORT).show(); 
     } else { 
      Toast.makeText(this, "User did not enable Scan always available", Toast.LENGTH_SHORT).show(); 
     } 
    } 
} 

请注意,您还需要这个权限在AndroidManifest.xml中:

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