gpt4 book ai didi

android - Python Kivy - 在 native 网络浏览器中打开 url 的应用程序

转载 作者:搜寻专家 更新时间:2023-11-01 08:26:31 24 4
gpt4 key购买 nike

我尝试制作一个简单的应用程序,在单击“屏幕一”上的按钮后在 Kivy 中打开一个网页。

我使用这个主题(Python - Showing a web browser/iframe right into the app)作为引用,但我不明白如何使用 Michael 提供的代码......

所以我尝试了这个...当我启动 apk(使用 Buildozer 构建)时它没有工作:')

import kivy
kivy.require('1.9.2')

from kivy.app import App
from kivy.lang import Builder
from kivy.uix.screenmanager import ScreenManager, Screen

# MICHAEL'S CODE
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

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('http://www.google.com/')
# END OF MICHAEL'S CODE

Builder.load_string('''

<ScreenOne>:
BoxLayout:
Label:
text: "SCREEN 1"
Button:
text: "GO GO GO TO GOOGLE !"
on_press: root.open_browser()

<ScreenTwo>:
BoxLayout:
Label:
text: "SCREEN 2"
Button:
text: "GO GO GO TO SCREEN 1"
on_press:
root.manager.transition.direction = "right"
root.manager.transition.duration = 1
root.manager.current = "screen_one"

''')

class ScreenOne(Screen):
def open_browser(self):
return Wv()

class ScreenTwo(Screen):
pass

screen_manager = ScreenManager()

screen_manager.add_widget(ScreenOne(name="screen_one"))
screen_manager.add_widget(ScreenTwo(name="screen_two"))


class BrowserApp(App):
def build(self):
return screen_manager

app = BrowserApp()
app.run()

应用程序不会崩溃,但会在我启动时关闭。

我做错了什么?我确定我没有以正确的方式使用它...

来自 adb logcat 的日志:

06-13 12:54:47.559 7429 7510 I python : ImportError: No module named android

06-13 12:54:47.579 7429 7510 I python : Python for android ended.

最佳答案

从您在评论中发布的日志中,我提取了两行重要内容:

06-13 12:54:47.559 7429 7510 I python : ImportError: No module named android
06-13 12:54:47.579 7429 7510 I python : Python for android ended.

这基本上意味着复制的代码:

from android.runnable import run_on_ui_thread

不会工作,因为它没有检测到 android 模块。该模块有一个单独的 recipe ,因此您需要将其添加到需求中,以便它编译 Cython 代码并将其添加到您的应用程序中,否则导入将始终失败。

基本上,在查看如此困惑的 logcat 时,您总是想搜索 3-4 个关键字 →“python”、“Traceback”、“Python for android”、“kivy”。 buildozer 中有一个过滤器为此,如果您使用它:

android.logcat_filters = *:S python:D

关于android - Python Kivy - 在 native 网络浏览器中打开 url 的应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44489331/

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