0 votos

Conectar a red específica de Wi-Fi (SSID): malvavisco

Mi código está trabajando en lollipop y a continuación, pero no parece funcionar marshmallow y arriba. Estoy tratando de conectar a la específica SSID todo el tiempo, es necesario volver a conectar a la SSID incluso si pierdo conexión.

Aquí está mi código.

//Connect to SSID if WiFi is Enabled
    public class ConnectToSSID extends AsyncTask<String, String, Boolean>
    {
        @Override
        protected void onPreExecute() {
            super.onPreExecute();
            progress = ProgressDialog.show(MainActivity.this, "Connecting...",
                    "Connecting to \""+SSID+"\" Please Wait...", true);
        }

        @Override
        protected Boolean doInBackground(String... params) {
            final WifiManager wifiManager = (WifiManager) getApplicationContext().getSystemService(Context.WIFI_SERVICE);
            WifiConfiguration wifiConfig = new WifiConfiguration();
            wifiConfig.SSID = String.format("\"%s\"", SSID);
            wifiConfig.preSharedKey = String.format("\"%s\"", NetworkPass);
            int netId = wifiManager.addNetwork(wifiConfig);
            wifiManager.disconnect();
            wifiManager.enableNetwork(netId, true);
            wifiManager.reconnect();
            SystemClock.sleep(10000);
            ConnectivityManager cm = (ConnectivityManager) getApplicationContext().getSystemService(CONNECTIVITY_SERVICE);
            NetworkInfo wifi = cm.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
            return wifi.isConnected();
        }

        @Override
        protected void onPostExecute(Boolean result) {
            super.onPostExecute(result);
            progress.dismiss();
            Log.e("result","r:"+result);
            if(result){
                Toast.makeText(MainActivity.this,"Successfully Connected to "+SSID,Toast.LENGTH_LONG).show();
                conctTaskMain = new connectTaskMain();
                conctTaskMain.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
                //startService();
            }else{
                timer.schedule(new TimerTask(){
                    @Override
                    public void run(){
                        conctTaskMain = new connectTaskMain();
                        conctTaskMain.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);}
                }, 1000);
                Toast.makeText(MainActivity.this,"Error Connecting to "+SSID,Toast.LENGTH_LONG).show();
            }
        }
    }

0voto

Dejan Puntos 21

Lamentablemente no tienen una respuesta recta su código, pero una pista es que no funciona para melcocha y por encima. Esto ocurre porque algunas clases obtiene desaprobado con cada nueva versión de Android. Debe comprobar si las clases o métodos que has utilizado son desaprobadas para niveles API de melcocha y por encima. Espero que esto ayude.

PreguntAndroid.com

PreguntAndroid es una comunidad de usuarios de Android en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X