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 для тестирования своих приложений без их компиляции.

Другие вопросы по тегам