android - jnius.find_javaclass ,jnius.JavaException : Class not found 'android/webkit/WebView'

标签 android python kivy pyjnius

我在尝试使用 jnius 的自动类在 Kivy 应用程序中获取 android webview 时遇到此错误。有什么办法可以解决?

谢谢

我的代码是这样的:

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

最佳答案

首先,您应该检查您是否在 Android 环境中运行代码,因为 android.webkit.WebView 仅在 Android 下运行,而不在 Windows 或 Linux 下的 PC 上运行。

推荐使用 Android 设备,并使用带有调试选项的 Buildozer 命令 buildozer android debug deploy run 运行应用。

如果您想在 PC 上运行它,那么您可以从 Kivy 安装 Android VM 并按照 https://kivy.org/docs/guide/packaging-android-vm.html 上的以下步骤操作:

  • 下载 Kivy / Buildozer VM ,在虚拟机部分。这 下载是1.2GB。提取文件并记住文件的位置 提取目录。

  • 下载VirtualBox的版本从 VirtualBox 下载区域为您的机器安装它。

  • 启动 VirtualBox,单击"file"、“导入设备”。

  • 选择解压后的目录,文件命名为“Buildozer VM.ovf”

  • 启动虚拟机并单击“Buildozer”图标。

    然后在 kivy.org/docs/guide/packaging-android-vm.html 中运行

如果您仍然遇到 jnius.JavaException: Class not found 'android/webkit/WebView' 异常的问题,那么您必须将该 jar 文件添加到类路径中:

import os
os.environ['CLASSPATH'] = 'absolute/path/file.jar'

如果出现 Class not found 'android/webkit/WebView' 异常,您可以在您的设备上找到 jar 或下载它并将其存储路径添加到类路径中。

关于android - jnius.find_javaclass ,jnius.JavaException : Class not found 'android/webkit/WebView' ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48316483/

相关文章:

javascript - 使用 Flask 实现强制页面刷新的最佳方法是什么?

python - Python从24位数据的立体声wav文件wav中读取单声道数据

Python/Kivy - UrlRequest 结果

android - apk 编译时 buildozer 出现奇怪的错误

java - 如何按字母顺序对 "ArrayList<HashMap<String, String>> arrList "进行排序?

android - HTC 设备 adb 错误

android - 如何使用 Robotium 单击微调器中的第一项?

android - 更改 TimePicker 文本颜色

python - 确定第 15 天后滚动到下个月的当前月份变量 - python 2.7

python - 在 anaconda 上安装 kivy 时出现 PermissionError(13, 'The process cannot access the file because it is being used by another process' )