Java Wifi广播安卓内部安卓意图
我正在学习android,我被困在这里: 我正在编写的应用程序定期在后台扫描Wifi信号。我也在使用安卓意向服务。问题是,应用程序从不执行BroadCastReceiver的onReceive方法 意图代码:Java Wifi广播安卓内部安卓意图,java,android,android-intent,android-wifi,Java,Android,Android Intent,Android Wifi,我正在学习android,我被困在这里: 我正在编写的应用程序定期在后台扫描Wifi信号。我也在使用安卓意向服务。问题是,应用程序从不执行BroadCastReceiver的onReceive方法 意图代码: public class BackgroundIntent extends IntentService { // Default Constructor public BackgroundIntent() { super("BackgroundIntent
public class BackgroundIntent extends IntentService {
// Default Constructor
public BackgroundIntent() {
super("BackgroundIntent");
// TODO Auto-generated constructor stub
}
WifiManager mainWifi;
BroadcastReceiver receiverWifi;
private final Handler handler = new Handler();
@TargetApi(Build.VERSION_CODES.GINGERBREAD)
@Override
protected void onHandleIntent(Intent intent) {
// TODO Auto-generated method stub
// Get mainWifi
mainWifi = (WifiManager) getSystemService(Context.WIFI_SERVICE);
if (mainWifi.isWifiEnabled() == false) {
mainWifi.setWifiEnabled(true);
}
receiverWifi = new WifiReceiver();
doInback();
}
// Basically a thread which calls itself after 5000milli sec
public void doInback() {
handler.postDelayed(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
mainWifi.startScan();
Log.i("Inside ", "doInBack");
// Call itself CODE GOES HERE :D
doInback();
}
}, 5000);
}
public class WifiReceiver extends BroadcastReceiver {
@TargetApi(Build.VERSION_CODES.GINGERBREAD)
public void onReceive(Context c, Intent intent) {
// CODE NEVER GOES HERE :(
List<ScanResult> wifiList;
wifiList = mainWifi.getScanResults();
Log.i("Inside receiver", "yes");
}
}
}
知道原因是什么吗?这是实施后台wifi信号扫描的错误方法。
当我在Main Activity中实现时,同样可以运行良好,因此我猜AndroidManifest.xml的编写是正确的。编辑:我可能误解了您的目标,如果您只是想知道为什么onReceive没有启动,那么您的活动必须注册接收者。如下所示:
receiverWifi = new WifiReceiver();
registerReceiver(receiverWifi, new IntentFilter(WifiManager.SCAN_RESULTS_AVAILABLE_ACTION));
doInback();
所以问题在于我使用的函数 我使用的是onHandleIntentintent,这是一个错误的函数。右一个是onStartCommandintent,flags,startId用于服务
很抱歉..很抱歉我不明白,我已经在使用WifireceiverTried的广播接收器,仍然没有结果:它进入doInback但无法调用onReceive这是您所能做的最好的,onReceive不会立即执行,因为它可能仍在扫描。扫描可能需要1秒到1小时,您最好设置一个接收器并交叉手指:谢谢您的及时回复!扫描的延迟是因为在安卓系统内部使用了此功能吗?它在室内活动时工作得非常好。。如果是这种情况,我会将此标记为已解决,也会将其标记为已解决,没有区别。。我还在日志中检查了它,doInback函数按预期在5秒后调用。这意味着wifi扫描没有延迟。。在解决这个问题之前,我会让这个问题再公开一天。谢谢
receiverWifi = new WifiReceiver();
registerReceiver(receiverWifi, new IntentFilter(WifiManager.SCAN_RESULTS_AVAILABLE_ACTION));
doInback();