问题描述
- 请问广播接受者不能发送广播吗?还是我写的代码有问题啊?
-
public class netReceiver extends BroadcastReceiver {@Override public void onReceive(Context context, Intent intent) { // TODO Auto-generated method stub Intent wifi = new Intent(); if(isWifi(context)){ wifi = new Intent(context, MyService.class); context.startService(intent); }else{ wifi.setAction("net.s5c.Changelink.wifiOff"); sendBroadcast(wifi); } Toast.makeText(context, "监听到WIFI动作", Toast.LENGTH_LONG).show(); } public static boolean isWifi(Context mContext) { ConnectivityManager connectivityManager = (ConnectivityManager) mContext .getSystemService(Context.CONNECTIVITY_SERVICE); NetworkInfo activeNetInfo = connectivityManager.getActiveNetworkInfo(); if (activeNetInfo != null && activeNetInfo.getType() == ConnectivityManager.TYPE_WIFI) { return true; } return false; }
}
解决方案
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
public class netReceiver extends BroadcastReceiver {
Intent wifi = new Intent();
@SuppressWarnings("static-access")
public void onReceive(Context context, Intent intent) {
ConnectivityManager manager = (ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo activeNetInfo = manager.getActiveNetworkInfo();
if (activeNetInfo != null
&& activeNetInfo.getType() == manager.TYPE_WIFI) {
wifi = new Intent(context, MyService.class);
wifi.setAction(MainActivity.ACCESSIBILITY_SERVICE);
context.startService(wifi);
}else{
wifi.setAction("net.s5c.Changelink.wifiOff");
context.sendBroadcast(wifi);
}
}
}
我又重写了一下,发现广播接收者多次接到广播还是不能启动起来服务,我知道我写的有问题,但那里有问题应该怎么写啊??
解决方案二:
可以发送的,这个没关系,你写的有问题
解决方案三:
启动服务的执行者是context,你的context是发送广播的context,也就是Activity,而不是该广播
时间: 2024-08-01 09:06:02