gpt4 book ai didi

android - 在 Android Kivy 应用程序上保存当前 URL

转载 作者:太空宇宙 更新时间:2023-11-03 11:10:08 28 4
gpt4 key购买 nike

我的代码:

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()

应用程序运行良好,但我想在 on_pause 事件触发时保存当前 URL,然后当 on_resume 事件发生时,我想返回到那个 URL。

我不知道该怎么做。

建议?

最佳答案

编辑:我很好奇,然后继续检查。事实上,我得到了一个 java.lang.RuntimeException: Probable deadlock detected due to WebView API being called on incorrect thread while UI thread is blocked。有必要对 WebViewClient 进行子类化,我不确定如何在 jnius 中执行此操作。

我认为您可以毫无问题地访问您的网址。小部件树如下所示:ServiceApp -> Wv但是你没有让 webview 成为 Wv 的成员。你可能应该这样做:

@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')

在此之后,我认为您可以:

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

有很多部分我不确定,需要进行测试以确保像这样进行是安全的,但这只是一个开始。我的 2 美分。

关于android - 在 Android Kivy 应用程序上保存当前 URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26867124/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com