检测WiFi扫描是否始终可用

3
我正在开发一个应用程序,它应该能够检测设备周围的Wi-Fi网络。我想检测“始终可用的扫描”是否已经打开,但是我找不到方法。我知道这是可能的,因为Google Now实际上已经实现了这一功能。
1个回答

8
你可以使用WifiManager中的isScanAlwaysAvailable()方法
我在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" />

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接