Cómo guardar la URL actual en Android Kivy Application

Mi código:

import kivy from kivy.app import App from kivy.lang import Builder from kivy.utils import platform from kivy.uix.widget import Widget from kivy.clock import Clock from jnius import autoclass from android.runnable import run_on_ui_thread WebView = autoclass('android.webkit.WebView') WebViewClient = autoclass('android.webkit.WebViewClient') activity = autoclass('org.renpy.android.PythonActivity').mActivity WebView = autoclass('android.webkit.WebView') WebViewClient = autoclass('android.webkit.WebViewClient') activity = autoclass('org.renpy.android.PythonActivity').mActivity class Wv(Widget): def __init__(self, **kwargs): super(Wv, self).__init__(**kwargs) Clock.schedule_once(self.create_webview, 0) @run_on_ui_thread def create_webview(self, *args): webview = WebView(activity) webview.getSettings().setJavaScriptEnabled(True) wvc = WebViewClient(); webview.setWebViewClient(wvc); activity.setContentView(webview) webview.loadUrl('www.google.com') class ServiceApp(App): def build(self): return Wv() def on_pause(self): return True def on_resume(self): return Wv() if __name__ == '__main__': ServiceApp().run() 

La aplicación funciona muy bien, pero quiero guardar la URL actual cuando on_pause evento de fuego y, a continuación, cuando on_resume evento quiero volver a esa URL.

No me imagino cómo hacer esto.

Sugerencias?

EDIT : Tenía curiosidad, y fui a comprobar las cosas. De hecho, obtengo una java.lang.RuntimeException: Probable bloqueo detectado debido a la API de WebView que se llama en el hilo incorrecto mientras se bloquea el subproceso de interfaz de usuario. Es necesario subclasificar WebViewClient y no estoy seguro de cómo hacerlo en jnius.

Creo que puede acceder a su url sin ningún problema. El árbol de widgets se parece a esto: ServiceApp -> Wv Pero no hiciste de la webview un miembro de Wv. Usted probablemente debería hacer:

 @run_on_ui_thread def create_webview(self, *args): self.webview = WebView(activity) self.webview.getSettings().setJavaScriptEnabled(True) wvc = WebViewClient(); self.webview.setWebViewClient(wvc); activity.setContentView(self.webview) self.webview.loadUrl('www.google.com') 

Después de esto, creo que usted podría hacer:

 class ServiceApp(App): def build(self): self.wv = Wv() return wv def on_pause(self): # do something with url, I don't know the android API that well # from http://developer.android.com/reference/android/webkit/WebView.html self.wv.webview.getUrl() return True def on_resume(self): # Here I have doubts why you create another widget but ok self.wv = Wv() return wv 

Hay muchas partes en las que no estoy seguro, y las cosas necesitan pruebas para asegurar que es seguro proceder así, pero es un comienzo. Mis 2 centavos.

  • ¿Cómo puedo descargar el archivo mediante webview? (Este caso es raro)
  • OnKeyDown dentro del fragmento WebView
  • ¿Cómo detener el video de YouTube en la vista web de Android?
  • Entrada de archivo HTML en android webview (android 4.4, kitkat)
  • Inyectar CSS a un sitio con webview en android
  • ¿Cómo detengo Flash después de dejar un WebView?
  • Establecer cookies de forma programática en Crosswalk WebView en Android
  • android setLayoutParams para webview genera ERROR
  • Cómo hacer un reemplazo sobre las webs cargadas en una Webview
  • WebRTC llega a Android WebView? ¿Cuando?
  • Flash no se muestra en WebView para Android 3.0.1
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.