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.
- RunOnUiThread en el fragmento
- Múltiples instancias de actividad y FLAG_ACTIVITY_REORDER_TO_FRONT
- Llamar a un método en otra actividad de una actividad
- Propósito always null onStartCommand
- Cómo iniciar / iniciar el android estilo de actividad más rápido
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!
- ¿Cómo detectar si alguna de mis actividades es la más visible y visible para el usuario?
- ¿Cómo evitar que la barra de herramientas y la barra de navegación parpadeen durante la transición de la actividad de la vista compartida?
- Android - Actividad vs FragmentActivity?
- Problema con la actividad de resolución de una intención - resolveActivityInfo ()
- Aplicación para Android con múltiples actividades
- Android Google IO 2014: ¿Cómo implementar la transición de la actividad con fragmentos?
- Android elementos compartidos transición pre-21
- Errores de administración del ciclo de vida de UnityPlayer en una aplicación nativa de Android
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());
- SDK de Google Drive: carga de imagen, reconocimiento óptico de caracteres, resultado de la descarga
- ¿Puedo usar excepciones de C ++ en la biblioteca JNI en Android?