我正在研究Wifi项目,有一个模块可以让用户以编程方式加入wifi.
在kitkat及以下它的工作成功,但在Lollipop它没有工作.
这是代码:
WifiManager wifiManager = (WifiManager) getSystemService(Context.WIFI_SERVICE);
WifiConfiguration wifiConfiguration = new WifiConfiguration();
wifiConfiguration.SSID = "\"testSSID\"";
wifiConfiguration.hiddenSSID = true;
wifiConfiguration.status = WifiConfiguration.Status.ENABLED;
wifiConfiguration.allowedKeyManagement
.set(WifiConfiguration.KeyMgmt.NONE);
netId = wifiManager.addNetwork(wifiConfiguration);
Log.d("WifiPreference", "add Network returned " + netId);
boolean checkEnableWifi = wifiManager.enableNetwork(netId, true);
Log.d("WifiPreference", "enableNetwork returned " + checkEnableWifi);
Run Code Online (Sandbox Code Playgroud)
我的测试设备是nexus 5内部版本编号LRX21O,我的代码或Lollipop上的bug有问题吗?
我是android编程的新手。我试过在活动中注册广播接收器,但是当应用程序 onPause 时我的接收器不工作。所以我发现我需要在清单中注册我的接收器。
我的目标是在用户关闭 Wifi 后关闭我的应用程序一段时间。
这是我的代码,但它不起作用。
public class ReceiverWifi extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Handler handler = new Handler();
Runnable runnable = new Runnable() {
@Override
public void run() {
MainActivity m = new MainActivity();
m.finish();
}
};
if (intent.getAction().equals(WifiManager.WIFI_STATE_CHANGED_ACTION)) {
int newWifiState = intent.getIntExtra(WifiManager.EXTRA_WIFI_STATE,
WifiManager.WIFI_STATE_UNKNOWN);
switch (newWifiState) {
case WifiManager.WIFI_STATE_DISABLED:
Toast.makeText(context, "Wi-fi Disconnected ",
Toast.LENGTH_SHORT).show();
handler.postDelayed(runnable, 15 * 1000);
break;
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
我的清单:
<receiver android:name="com.example.wifimonitor.ReceiverWifi" >
<intent-filter>
<action android:name="android.net.wifi.WIFI_STATE_CHANGED" /> …Run Code Online (Sandbox Code Playgroud)