我正在使用 android studio 制作一个 android 应用程序。 这个想法是通过wifi连接到我的设备(接入点),我将来可能不需要扫描,我只是想以编程方式连接它。 确实如此!工作!! 但是我想在接入点不可用时执行一些代码,而且其中重要的部分是我想在我的Android手机IS连接时执行一些代码到接入点。
问题:如何在异步任务中检查wifi状态是否改变?
这是我使用的代码:
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_settings,
container, false);
button = (Button) view.findViewById(R.id.add_device_button);
WifiTask wifiTask = new WifiTask();
wifiTask.execute();
return view;
}
public class WifiTask extends AsyncTask<Boolean,Void,Boolean> {
@Override
protected void onPostExecute(Boolean wifi_enabled) {
super.onPostExecute(wifi_enabled);
if(wifi_enabled != true){
button.setEnabled(false);
Toast.makeText(getContext(),"Enabling Wifi", Toast.LENGTH_SHORT).show();
}
if( wifi_enabled == true) {
button.setEnabled(true);
}
}
@Override
protected Boolean doInBackground(Boolean... booleans) {
WifiManager wifiManager = (WifiManager)getActivity().getApplicationContext().getSystemService(Context.WIFI_SERVICE);
Boolean is_wifi_enabled = wifiManager.isWifiEnabled();
Log.i("debug", is_wifi_enabled.toString() + " wifi is enabled");
if(is_wifi_enabled == false)
{
wifiManager.setWifiEnabled(true);
is_wifi_enabled = wifiManager.isWifiEnabled();
}
return is_wifi_enabled;
}
}
最佳答案
- 检查您的互联网连接
- 如果您的互联网连接已连接,请执行某些操作,未连接则延迟几分钟,如果延迟结束,请重新检查
检查互联网>>>>
private boolean isNetworkConnected() {
ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
//enter code here
return cm.getActiveNetworkInfo() != null;
}
延迟>>>
handler = new Handler();
final Runnable r = new Runnable() {
public void run() {
tv.append("Hello World");
handler.postDelayed(this, 1000);
}
};
handler.postDelayed(r, 1000);
关于java - 如何以编程方式在异步任务中等待android(java)中的wifi连接(接入点)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54775677/