我需要通过wi-fi连接到设备,为此我正在使用WifiManager.startScan()
。理论上,onReceive()
应该被回调,但这不会发生。代码只是一直在等待回调。
问题是,此代码实际上可以在装有Android 8.1的三星平板电脑上正常运行,但不适用于我尝试过的任何手机(<华为Android 8.0和三星Android 9 )。 / p>
以下是相关代码:
public void Init()
{
try {
mainWifiObj = (WifiManager) act.getApplicationContext().getSystemService(Context.WIFI_SERVICE);
WifiScanReceiver wifiReceiver = new WifiScanReceiver(act, logger, mainWifiObj);
act.getApplicationContext().registerReceiver(wifiReceiver, new IntentFilter(WifiManager.SCAN_RESULTS_AVAILABLE_ACTION));
mainWifiObj.startScan();
}
catch (Exception ex)
{
...
}
}
public class WifiScanReceiver extends BroadcastReceiver {
...
public void onReceive(Context c, Intent intent) {
try {
...// doesn't get here
}
} catch (Exception e) {
...
}
...
}
这是我使用的所有重要清单权限:
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
该代码不会产生任何错误,只是默默地无法执行回调。
答案 0 :(得分:0)
是的,我找到了答案。出于仅对Android设计人员合理的原因,您必须启用基于位置的服务才能使其正常工作。因此,仅给应用程序提供所有必需的权限还不够,还需要进行设置并启用LBS。
它在平板电脑上工作的原因是在其上启用了LBS ...但是,如何控制所有这些依赖项呢?