BroadcastReceiver onReceive()没有被调用

jadechen19910909 jadechen19910909 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
代码个功能是在activity中启动service,在service中获取相关数据后广播给activity,activity刷新界面,但是activity中的onReceive怎么也不执行。
说明:使用的是动态注册

这个是activity代码:
package com.jade.hust;

import java.util.ArrayList;
import java.util.List;

import android.app.Activity;
import android.app.AlertDialog;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.IntentFilter;
import android.location.LocationManager;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.net.wifi.ScanResult;
import android.net.wifi.WifiManager;
import android.os.Bundle;
import android.provider.Settings;
import android.util.Log;
import android.widget.ListView;

import com.example.indoorpostion.R;

public class MainActivity extends Activity {
private static final String Jade = "JADE";
private ConnectivityManager cm;
private LocationManager lm;
private WifiManager wifiManager;
private List<ScanResult> WifiList;
private List<Wifi> list;
private ListView listView;
private MyReceiver mr;
private WifiAdapter wa;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
this.setContentView(R.layout.mian);

wifiManager = (WifiManager) getSystemService(Context.WIFI_SERVICE);//获得wifi管理器
if(!wifiManager.isWifiEnabled()){
wifiManager.setWifiEnabled(true);
}
//获得listview控件
listView=new ListView(this);
listView = (ListView) findViewById(R.id.wifi_list);
wifiManager.startScan();//开始扫描wifi
WifiList=wifiManager.getScanResults();//返回扫描结果

list=new ArrayList<Wifi>();//用list存储需要的wifi信息
for(int i=0;i<WifiList.size();i++){
Wifi wifi=new Wifi();
wifi.setSSID(WifiList.get(i).SSID);
wifi.setLEVEL(WifiList.get(i).level);
list.add(wifi);
}

wa=new WifiAdapter(this,list);//初始化适配器
listView.setAdapter(wa);//设置适配器
startService(new Intent(this,WifiListenerService.class));//启动监听wifi变化的服务

}


@Override
protected void onResume() {
// TODO Auto-generated method stub
//checkWifiGps();
Log.e("JADE","onResume=.............");
mr=new MyReceiver();//广播接收器,接收来自后台服务更新的wifi信息
IntentFilter filter = new IntentFilter();
filter.addAction("com.example.communication.RECEIVER");//设置拦截器
this.registerReceiver(mr, filter);//注册广播
super.onResume();
}


@Override
protected void onDestroy() {
// TODO Auto-generated method stub
Log.e("JADE","onDestroy.............");

super.onDestroy();
}




@Override
protected void onPause() {
// TODO Auto-generated method stub
Log.e("JADE","onPause=.............");
this.unregisterReceiver(mr);//注销广播
super.onPause();
}



class MyReceiver extends BroadcastReceiver{

@Override
public void onReceive(Context context, Intent intent) {
// TODO Auto-generated method stub
Log.e("JADE","wifilist=.............");

}}
}

service代码:
package com.jade.hust;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;

import android.app.Service;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.net.wifi.ScanResult;
import android.net.wifi.WifiManager;
import android.os.IBinder;
import android.support.v4.content.LocalBroadcastManager;
import android.util.Log;

public class WifiListenerService extends Service {
private WifiManager wifim;
private WifiReceiver wr;
private List<ScanResult> WifiList;
private List<Wifi> list;

@Override
public IBinder onBind(Intent arg0) {
// TODO Auto-generated method stub
return null;
}

@Override
public void onCreate() {
// TODO Auto-generated method stub
Log.i("JADE","onCreate=.............");
wifim=(WifiManager) getSystemService(Context.WIFI_SERVICE);//获得wifi管理器
wr= new WifiReceiver(); //创建广播接收器,接收系统wifi信息变化
super.onCreate();
}

@Override
public void onDestroy() {
// TODO Auto-generated method stub

unregisterReceiver(wr);//注销广播
super.onDestroy();
}

@Override
public void onStart(Intent intent, int startId) {
// TODO Auto-generated method stub
IntentFilter filter=new IntentFilter();
filter.addAction(WifiManager.SCAN_RESULTS_AVAILABLE_ACTION);
registerReceiver(wr, filter);//注册广播
scanWifi();

// new Thread(){//新建线程,1秒更新一次
// public void run(){
// while (true) {
// scanWifi();
// try {
// sleep(1000);
// } catch (InterruptedException e) {
// // TODO Auto-generated catch block
// e.printStackTrace();
// }
// }
// }
//
//
// }.start();

super.onStart(intent, startId);
}

private void scanWifi() {//扫描wifi
// TODO Auto-generated method stub
if(!wifim.isWifiEnabled())
wifim.setWifiEnabled(true);
wifim.startScan();
}


@Override
public int onStartCommand(Intent intent, int flags, int startId) {
// TODO Auto-generated method stub
return super.onStartCommand(intent, flags, startId);
}

class WifiReceiver extends BroadcastReceiver{

@Override
public void onReceive(Context context, Intent intent) {
// TODO Auto-generated method stub

if (intent.getAction().equals(
WifiManager.SCAN_RESULTS_AVAILABLE_ACTION)) {

WifiList = wifim.getScanResults();

list=new ArrayList<Wifi>();

for(int i=0;i<WifiList.size();i++){
Wifi wifi=new Wifi();
wifi.setSSID(WifiList.get(i).SSID);
wifi.setLEVEL(WifiList.get(i).level);
list.add(wifi);
}
Intent intentM=new Intent();
intentM.putExtra("list", (Serializable)list);
intent.setAction("com.example.communication.RECEIVER");

LocalBroadcastManager.getInstance(context).sendBroadcast(intentM);//将扫描更新的结果广播
Log.i("JADE","onReceive=.............");

}
}

}

}

实在是没有检查出问题来,网上也搜了很久,求大神赐教
...全文

相关推荐

评论 9
收藏 已收藏
分享
返回顶部
jadechen19910909
Android 80,490 成员 91,375 内容