Android Wear Wifimanager-必须在设置中手动打开WiFi才能获得结果



我正在尝试在Moto 360 Sport(Android 6.0.1(中获得当前可用的WiFi列表。我的代码有效,但我必须在设置中手动打开WiFi,以便可以调用BroadcastReceiver

我的wifi接收器:

broadcastReceiver = new BroadcastReceiver() {
    @Override
    public void onReceive(Context context, Intent intent) {
        if (intent.getAction().equals(WifiManager.SCAN_RESULTS_AVAILABLE_ACTION)) {
            List<ScanResult> scanResults = wifiManager.getScanResults();
            sendWifiResult(scanResults);
            unregister();
        }
    }
};

我要求用户提供大量权限:

private static String[] permissions = {
        "android.permission.BODY_SENSORS",
        "android.permission.RECORD_AUDIO",
        "android.permission.INTERNET",
        "android.permission.ACCESS_NETWORK_STATE",
        "android.permission.CHANGE_WIFI_STATE",
        "android.permission.ACCESS_WIFI_STATE",
        "android.permission.LOCATION_HARDWARE",
        "android.permission.ACCESS_FINE_LOCATION",
        "android.permission.ACCESS_COARSE_LOCATION",
        "android.permission.ACCESS_LOCATION_EXTRA_COMMANDS",
};
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    // some unrelated codes
    if (!checkPermissions())
        this.requestPermissions(permissions, 1);
    else
        startService(new Intent(this, DataSourceService.class));
}
private boolean checkPermissions() {
    for (String permission : permissions) {
        if (checkSelfPermission(permission) != PackageManager.PERMISSION_GRANTED)
            return false;
    }
    return true;
}
@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
    super.onRequestPermissionsResult(requestCode, permissions, grantResults);
    if (checkSelfPermission("android.permission.BODY_SENSORS")
            != PackageManager.PERMISSION_GRANTED)
        requestPermissions(permissions, 1);
    else
        startService(new Intent(this, DataSourceService.class));
}

我搜索了很多。但是我发现的所有相关问题都是全部或一无所有 - 他们解决了所有问题,或者,他们无法获得广播或空无一人的列表。

就我而言,我确实得到了结果,但前提是我自己打开系统设置中的wifi。

这真的很奇怪,我找不到解决方案。我需要在Android Wear中使用任何特殊配置吗?

任何帮助将不胜感激。谢谢。

解决。因此,而不是使用

if (!wifiManager.isWifiEnabled()) {
    wifiManager.setWifiEnabled(true);
}

...只是火

wifiManager.setWifiEnabled(true);

直接。由于某种原因,isWifiEnabled()总是返回true

相关内容

  • 没有找到相关文章

最新更新