我正在尝试在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
。