Android 广播接收器:检查wifi是否存在
我使用广播接收器编写了一段代码,以便在连接状态更改时调用Receive上的方法,并显示一个toast来指示更改。从这个意义上讲,我有一个单独的类,其中广播接收器以这种方式实现:Android 广播接收器:检查wifi是否存在,android,broadcastreceiver,Android,Broadcastreceiver,我使用广播接收器编写了一段代码,以便在连接状态更改时调用Receive上的方法,并显示一个toast来指示更改。从这个意义上讲,我有一个单独的类,其中广播接收器以这种方式实现: public class Receiver extends BroadcastReceiver { private static final String DEBUG_TAG = "NetworkStatusExample"; @Override public void onReceive(Context
public class Receiver extends BroadcastReceiver {
private static final String DEBUG_TAG = "NetworkStatusExample";
@Override
public void onReceive(Context context, Intent intent) {
// Shows a toast when the connectivity state change
Toast.makeText(context, "stato wifi cambiato",
Toast.LENGTH_LONG).show();
Log.d("prova", "action: "
+ intent.getAction())
}
}
当网络状态发生更改并显示toast时,它可以正确地调用OnReceive()方法
在主文件中,我输入了一个代码,一旦按下一个按钮,它将验证Wifi是否已连接。在本例中,还会显示一个带有消息“Wifi已连接:正确/错误”的祝酒词,这取决于是否存在连接。在这种情况下也适用的代码是:
public class MainActivity extends Activity {
private static final String DEBUG_TAG = "NetworkStatusExample";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ConnectivityManager connMgr = (ConnectivityManager)
getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo networkInfo = connMgr.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
final boolean isWifiConn = networkInfo.isConnected();
String wifiStateText = "No State";
Log.d(DEBUG_TAG, "Wifi connected: " + isWifiConn);
Button prova = (Button) findViewById(R.id.button1);
prova.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Context context = getApplicationContext();
CharSequence text = "Wifi connected: " + isWifiConn;
int duration = Toast.LENGTH_SHORT;
Toast toast = Toast.makeText(context, text, duration);
toast.show();
}
});
}
现在,我试图将代码的最后一部分嵌入到上面定义的OnReceive()方法中,以便在网络连接发生变化时自动执行所有操作,所以我认为广播接收器的最终代码是:
public class Receiver extends BroadcastReceiver {
private static final String DEBUG_TAG = "NetworkStatusExample";
// Verifica se il wifi è connesso
@Override
public void onReceive(Context context, Intent intent) {
// Shows a toast when the connectivity state change
Toast.makeText(context, "stato wifi cambiato",
Toast.LENGTH_LONG).show();
Log.d("prova", "action: "
+ intent.getAction());
ConnectivityManager connMgr = (ConnectivityManager)
getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo networkInfo = connMgr.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
final boolean isWifiConn = networkInfo.isConnected();
String wifiStateText = "No State";
Log.d(DEBUG_TAG, "Wifi connected: " + isWifiConn);
// Toast that shows if the wifi is connected
CharSequence text = "Wifi connected: " + isWifiConn;
int duration = Toast.LENGTH_SHORT;
Toast toast = Toast.makeText(context, text, duration);
toast.show();
}
}
在这种情况下,我会得到以下错误:
the method getsystemservice(string) is undefined for the type Receiver
在这一行:
getSystemService(Context.CONNECTIVITY_SERVICE);
怎么了?我该怎么做才能修好它 您可以尝试以下方法:
context.getSystemService(Context.CONNECTIVITY_SERVICE);
您需要使用
'context'
参数:context.getSystemService(context.CONNECTIVITY\u服务)代码>
BroadcastReceiver
不是从上下文派生的