我想在broadcastReceiver中检查设备是否已连接.下面是我的代码:
public boolean isOnline(Context context) {
NetworkInfo info = (NetworkInfo) ((ConnectivityManager) context
.getSystemService(Context.CONNECTIVITY_SERVICE)).getActiveNetworkInfo();
if (info == null || !info.isConnected()) {
Log.e("UpdateDataReceiver","info: "+info);
return false;
}
return true;
}
Run Code Online (Sandbox Code Playgroud)
我的代码问题: 当BroadcastReceiver在后台触发时(当app在后台时),上面的函数返回false(即使连接了wifi),当app在前台时它返回true.
info:NetworkInfo:type:WIFI [],state:DISCONNECTED/BLOCKED,reason :( unspecified),extra:(none),漫游:false,failover:false,isAvailable:true,isConnectedToProvisioningNetwork:false,simId:0
设备信息:Redmi Note
我打算制作一个应用程序来检查某个 wifi 网络是否使用通用密码。我有一个最常见的密码列表,但具有以下功能:
public boolean connectTo(String psKey){
WifiConfiguration wc = new WifiConfiguration();
wc.SSID = "\"" + dbw.getSsid() + "\"";
wc.preSharedKey = "\"" + psKey + "\"";
wc.status = WifiConfiguration.Status.ENABLED;
wc = configureCapabs(wc, dbw.getCapability());
int res = wifi.addNetwork(wc);
Toast.makeText(this, "add Network returned " + res , Toast.LENGTH_SHORT).show();
boolean b = wifi.enableNetwork(res, true);
Toast.makeText(this, "enableNetwork returned " + b , Toast.LENGTH_SHORT).show();
if(!b) return false;
boolean fin = /*b ? wifi.reassociate() : */wifi.reconnect();
return fin;
}
Run Code Online (Sandbox Code Playgroud)
它返回真,即使密码不正确。有没有办法检查我尝试登录的密码是被接受还是被拒绝?
如果我打开/关闭移动蜂窝数据,我想知道如何触发BroadcastReceiver.我已经注册了BroadcastReceiver,如果我打开/关闭wifi,它工作正常但是如果我打开/关闭蜂窝数据没有广播触发器.有人可以帮我这个吗?
这是我的代码.
这里我在Manifest.file中注册BroadcastReceiver
<receiver android:name="com.servicesandroid.NetworkCheckReceiver" >
<intent-filter>
<action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
</intent-filter>
</receiver>
Run Code Online (Sandbox Code Playgroud)
清单权限
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.INTERNET"/>
Run Code Online (Sandbox Code Playgroud)
这是我的BroadcastReceiver类.
public class NetworkCheckReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
// TODO Auto-generated method stub
Toast.makeText(context, "Started", Toast.LENGTH_SHORT).show();
Log.d("app","Network connectivity change");
}
}
Run Code Online (Sandbox Code Playgroud)