OnActivityResult siempre devuelve 0 (RESULT_CANCELED) al llamar a la configuración

Podría estar abordando el problema de una manera equivocada ..

Lo que estoy haciendo es mostrar un mensaje de alerta cuando no hay conexión a Internet y el botón "ok" lleva al usuario a la configuración wifi para encender el Internet. Lo que quiero que la aplicación haga, cuando el usuario vuelve a ella después de cambiar (o no) los ajustes de Internet es recargar la aplicación o la actividad donde estaba.

Para esto estoy haciendo la siguiente llamada para el botón "ok":

static void startAct(Activity ctxt) { ctxt.startActivityForResult(new Intent(android.provider.Settings.ACTION_SETTINGS), WIFI_SETTINGS); } 

En la clase de la actividad, donde se muestra este mensaje, tengo lo siguiente:

 public void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if (requestCode == WIFI_SETTINGS && resultCode == RESULT_OK) { this.finish(); Intent myIntent = new Intent(this, MyActivity.class); startActivity(myIntent); } } 

Pero resultCode es siempre 0, onActivityResult se llama justo después de que se presiona el botón "ok".

¿Debo abordar este problema de manera diferente? ¿Cómo puedo volver a cargar / actualizar mi aplicación cuando el usuario vuelve de la configuración wifi?

He comprobado respuestas similares, pero parece que utilizan una actividad dentro de la misma aplicación, por lo que pueden llamar set_result(...) , pero no puedo hacer eso aquí.

¡Gracias!

Como otros han dicho que no debería llamar a terminar – también llamar a startActivityForResult no es tan útil. Incluso si el resultCode era distinto de 0, tarda unos segundos en conectarse a WiFi normalmente.

Así que para responder a su pregunta, debe utilizar un BroadcastReceiver y escuchar las intenciones de cambio de red.

Este código es un poco antiguo, pero aquí hay algo similar que hago en una de mis aplicaciones. Debe esperanzadamente conseguirle comenzado.

 protected void registerWifiReceivers() { IntentFilter f1 = new IntentFilter(WifiManager.WIFI_STATE_CHANGED_ACTION); IntentFilter f2 = new IntentFilter(WifiManager.NETWORK_STATE_CHANGED_ACTION; this.registerReceiver(mReceiver, f1); this.registerReceiver(mReceiver, f2); } final BroadcastReceiver mReceiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { String action = intent.getAction(); Log.d ( TAG, "BroadcastReceiver: " + action ); if (action.equals(WifiManager.NETWORK_STATE_CHANGED_ACTION)) { Log.i ( TAG, "handling event: WifiManager.NETWORK_STATE_CHANGED_ACTION action: "+action ); handleWifiStateChange(intent); } else if (WifiManager.WIFI_STATE_CHANGED_ACTION.equals(action)) { Log.i ( TAG, "ignoring event: WifiManager.WIFI_STATE_CHANGED_ACTION action: "+action ); } } } protected void handleWifiStateChange ( Intent intent ) { NetworkInfo info = (NetworkInfo)intent.getParcelableExtra(WifiManager.EXTRA_NETWORK_INFO); if (info.getState().equals(NetworkInfo.State.CONNECTED)) { //do something... } } 

No utilice plesae

  this.finish(); 

Esto cerrará completamente su actividad. Al usar el método startActivityForResult (), debe usar this.finish después del método onActivityResult ().

No cree una nueva intención. Sólo haz esto –

 finish(); startActivity(getIntent()); 
  • Cómo utilizar BaseGameActivity.getApiClient () en varias actividades?
  • Android: java.lang.Throwable: setStateLocked
  • La aplicación se bloquea después de recibir una llamada telefónica
  • Indicador de configuración en onSaveInstanceState () para determinar tipo de salida en onDestroy ()
  • Iniciar de forma programática la actividad "Agregar una cuenta de Google" en Android
  • AppCompatActivity en lugar de Actividad o FragmentActivity
  • Iniciar actividad con una animación
  • La actividad no está asignada a Android.app.Activity Manifest XML
  • ¿Cómo puedo crear una actividad transparente en Android?
  • Android: Cómo iniciar la actividad en segundo plano
  • Anular el botón de retroceso de Android
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.