就我而言,我有用于启用 wifi 的现有代码。在这里,我在 Android Q api 级别 29 中的
CONNECTIVITY_ACTION
和 setWifiEnabled(true)
处获得代码折旧。下面的代码在旧版本中运行良好,但折旧仅发生在 api 29
上。如何借助版本条件解决它。
启用Wifi代码
private void enableWifi(Context context, String ssid) {
if(webWifiStateListener != null) {
context.unregisterReceiver(webWifiStateListener);
}
webWifiStateListener = new WifiStateListener(ssid);
context.registerReceiver(webWifiStateListener,
new IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION)); // CONNECTIVITY_ACTION Deprecated Android Q
webWifiManager.setWifiEnabled(true); // Deprecated Android Q
}
Android Q 不允许应用程序打开和关闭 Wi-Fi。您可以使用类似的东西https://developer.android.com/reference/android/provider/Settings.Panel
在 Android Q 中使用此功能:
Intent panelIntent = new Intent(Android.Provider.Settings.Panel.ActionWifi);
StartActivityForResult(panelIntent,1);
请勿使用:
webWifiManager.setWifiEnabled(true); // Deprecated Android Q
在 android studio Koala 版本中 - 以下代码工作正常
public class MainActivity extends AppCompatActivity {
WifiManager wifiManager;
Button buttonWifi;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
wifiManager = (WifiManager) getApplicationContext().getSystemService(Context.WIFI_SERVICE);
buttonWifi = findViewById(R.id.btnWifi);
buttonWifi.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent panelIntent = new Intent(Settings.Panel.ACTION_WIFI);
startActivityForResult(panelIntent,1);
}
});
}
@Override
public void startActivityForResult(@NonNull Intent intent, int requestCode) {
super.startActivityForResult(intent, requestCode);
if(requestCode == 1){
if(wifiManager.isWifiEnabled()){
Toast.makeText(this, "Stop the wifi if you want", Toast.LENGTH_SHORT).show();
}
else{
Toast.makeText(this, "Start the wifi if needed", Toast.LENGTH_SHORT).show();;
}
}
}
}