jnius.find_javaclass, jnius.JavaException: класс не найден 'android/webkit/WebView'
Я получаю эту ошибку при попытке использовать автокласс jnius для просмотра веб-приложения Android в приложении Kivy. Что может быть исправить?
Спасибо
Мой код выглядит так:
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
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')
class ServiceApp(App):
def build(self):
return Wv()
if __name__ == '__main__':
ServiceApp().run
2 ответа
Во-первых, вы должны проверить, запускаете ли вы код в среде Android, так как android.webkit.WebView работает только под Android, а не на ПК с Windows или Linux.
Рекомендуется устройство Android и запустить приложение с помощью Buildozer
команда buildozer android debug deploy run
с параметрами отладки.
В случае, если вы хотите запустить его на ПК, вы можете установить виртуальную машину Android из Kivy и выполнить следующие действия на https://kivy.org/docs/guide/packaging-android-vm.html:
- Загрузите виртуальную машину Kivy / Buildozer в разделе "Виртуальная машина". Загрузка составляет 1,2 ГБ. Извлеките файл и запомните расположение извлеченного каталога.
- Загрузите версию VirtualBox для вашей машины из области загрузки VirtualBox и установите ее.
- Запустите VirtualBox, нажмите "Файл", "Импортировать устройство".
- Выберите извлеченный каталог, файл должен называться "Buildozer VM.ovf"
Запустите виртуальную машину и щелкните значок "Buildozer".
и запустить в kivy.org/docs/guide/packaging-android-vm.html
Если вы по-прежнему сталкиваетесь с проблемой исключения jnius.JavaException: класс не найден в "android/webkit/WebView", то вам нужно добавить этот файл jar в classpath:
import os
os.environ['CLASSPATH'] = 'absolute/path/file.jar'
В случае исключения Class and not 'android/webkit/WebView' вы можете либо найти файл jar на своем устройстве, либо загрузить его и добавить путь, по которому вы его храните, в путь к классам.
Используйте Pydroid3 для тестирования своих приложений без их компиляции.