java - 如何以编程方式在异步任务中等待android(java)中的wifi连接(接入点)?

标签 java android

我正在使用 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;
        }
    }

最佳答案

  1. 检查您的互联网连接
  2. 如果您的互联网连接已连接,请执行某些操作,未连接则延迟几分钟,如果延迟结束,请重新检查

检查互联网>>>>

    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/

相关文章:

Java:如果行由 AbstractTableModel 插入,如何将行(数据)显式插入 JTable

android - React Native Flatlist 在 Android 上崩溃

emulation - 是否可以使用 Mac 和实际的 Google TV 设备开发 Google TV 应用?

android - FileObserver callback 不会触发(stackoverflow 的相关话题中有详细提到)

c# - MvxListView 不像普通的 xamarin ListView 那样流畅

java - 从 Java 使用 Octave

java - Android - 从 Activity 中获取 list 元数据

java - 扩展阔叶默认管理 Controller

java - 将 csv 数据作为 zipentry 对象移动到 zip 存档 - 构造函数 ZipEntry(Path) 未定义

java - 无法解析符号 'widget' 和 'v7' 。我该如何解决?